Examples

The following examples will give you a taste of how to get things done in Enchilada.

Map

The map lambda takes a sequence holding a map pair, and another sequence to apply the map pair on:

{m={s=s m *}}

Here is an example that negates all the numbers in a number list:

10 ~ [-] {m={s=s m *}} 1 @

Fold

The fold lambda takes a sequence that holds a fold pair, a base and another sequence to apply the fold on:

{f={b={s=[b] s f * | {e==e}}}}

Here is an example that sums all the numbers in a number list:

10 ~ 0 [+] {f={b={s=[b] s f * |}}} {e==e}

Libraries

The easiest way to define libraries is to store a multimap in the global slot and then to use this multimap to replace symbols with expressions via the replace operator.

Subsequently, the global slot can be re-used (across multiple sessions) to build a library of named lambdas. Here is a example of how to create and use a simple math library:

=[add=+;mul=*;div=/;min=&;max=|]

After the global slot is set, the library can be used via the global slot reference ():

[1 2 add 4 mul 5 mod] () ^ == [1 2 + 4 * 5 mod]

Additionally, the global slot can be set to a new multimap, adding the missing mod function:

=() [mod=%] <

The previous mathematical expression will now be correctly compiled:

[1 2 add 4 mul 5 mod] () ^ == [1 2 + 4 * 5 %]

Libraries can be referenced by other (computer) nodes after the global slot has been persisted on a filesystem or in a DHT.

Relational Tables

TODO

Documents

TODO

Dataflow

TODO