A use clause tells Unison to allow identifiers from a given namespace to be used unqualified in the lexical scope where the use clause appears.
In this example, the use base.List
clause allows the definition that follows it to refer to lib.base.List.take
as simply take
:
oneTwo = List.take 2 [1, 2, 3]
The general form of use
clauses is as follows:
use pathToNamespace name_1 name_2 .. name_n
Where namespace
is the namespace from which we want to use names unqualified, and name_1
through name_n
are the names we want to use. If no names are given in the use
clause, Unison allows all the names from the namespace to be used unqualified. There's no performance penalty for this, as use
clauses are purely a syntactic convenience. When rendering code as text, Unison will insert precise use
clauses that mention exactly the names it uses, even if the programmer omitted the list of names.
See the section on identifiers for more on namespaces as well as qualified and unqualified names.