6. importing operators

Apart from trace, there are only very little builtin operators in alv - you can see all of them in the builtins section of the reference. All of the ‘real’ functionality of alv is grouped into modules, that have to be loaded individually. Modules help organize all of the operators so that it is less overwhelming to look for a concrete feature. It is also possible to create your own plugins as new modules, which will be covered in another guide soon.

Let’s try using the + operator from the math module. To use operators from a module, we need to tell alv to load it first: We can load all the operators from the math module into the current scope using the import* builtin:

(import* math)
(trace (+ 1 2))

prints

trace (+ 1 2): <num= 3>

Because it can get a bit confusing when all imported operators are mixed in the global scope, it is also possible to load the module into its own scope and use it with a prefix. This is what the import builtin is for:

(import math)
(trace (math/+ 1 2))