You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Unison (programming language)

From EverybodyWiki Bios & Wiki




Script error: No such module "Draft topics". Script error: No such module "AfC topic".

Unison is a statically-typed programming language primarily influenced by Haskell, Erlang, and Frank.[1]

Unison's primary characteristic is that it is a content-addressed and immutable language. It is designed for modern, functional programming, with the unique capability to describe entire distributed systems using a single program.[2]

Language Overview[edit]

Unison's core philosophy is that each definition in the language is uniquely identified by a hash of its syntax tree, meaning Unison code is content-addressed.[3]

This unique identification allows Unison to simplify distributed programming, eliminate builds and dependency conflicts, support typed durable storage, enable structured refactorings, and provide better tools for working with code.[4]

Content-Addressing[edit]

Unison uses a 512-bit SHA3 digest to represent a term or a type's internal structure, excluding names. This hash acts as a unique identifier for the term or type declaration, allowing it to be unambiguously referred to in all contexts. In Unison, the hash of a term or type is considered its true name.[5]

Hash References[edit]

Literal hash references in Unison have specific structures, with different formats for term definitions, mutually recursive definitions, data constructors, cyclic type definitions, and built-in references.[6]

Unison also supports short hashes, where a prefix of the base32Hex encoded SHA3 digest can be used instead of the full hash. If the short hash is long enough to be unambiguous in the given environment, Unison substitutes the full hash at compile time.[7]

Dependency Management[edit]

In Unison, dependency conflicts, which often arise due to different definitions competing for the same names in traditional programming languages, are not a concern. Instead, what might be perceived as a dependency conflict in Unison is merely a situation where multiple terms or types serve similar purposes. This flexibility in managing dependencies makes Unison an adaptable and developer-friendly language.[8]

External Links[edit]

References[edit]

  1. "Unison langage". univalence.io. Retrieved 2023-07-21.
  2. "Unison". unison-lang.org. Retrieved 2023-07-21.
  3. Warski, Adam. "Trying out Unison, part 1: code as hashes". SoftwareMill Tech Blog. Retrieved 2023-07-21.
  4. "The big idea". unison-lang.org. Retrieved 2023-07-21.
  5. https://itnext.io/writing-code-without-plain-text-files-cb8f1ed2c0ad?gi=fa5979d85e28
  6. "Unison Programming Language - Literals". Unison Programming Language Official Website. Retrieved July 21, 2023.
  7. "Unison Programming Language - Hashes". Unison Programming Language Official Website. Retrieved July 21, 2023.
  8. Chiusano, Paul (2020-04-10). "How Unison reduces ecosystem churn". unisonweb.org. Retrieved 2023-07-21.



This article "Unison (programming language)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Unison (programming language). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.