++ly
List from raw noun
Takes a null-terminated noun and produces a list
.
Accepts
a
is a null-terminated noun.
Produces
A list
.
Source
++ lyle:nl
Examples
> (ly [1 2 3 ~])~[1 2 3]> (ly "abc")~['a' 'b' 'c']
Discussion
ly
is an alias for le:nl
.
++my
Map from raw noun
Takes a null-terminated noun and produces a map.
Accepts
a
is a noun composed of ordered pairs and terminated with ~
.
Produces
A map
.
Source
++ mymy:nl
Examples
> (my [['a' 1] ['b' 2] ~])[n=[p='b' q=2] l={[p='a' q=1]} r={}]
Discussion
my
is an alias for my:nl
.
++sy
Set from raw noun
Takes a null-terminated noun and produces a set
.
Accepts
a
is a null-terminated noun.
Produces
A set
.
Source
++ sysi:nl
Examples
> (sy [1 2 3 ~])[n=2 l={1 3} r={}]> (sy (ly [1 2 3 ~]))[n=2 l={1 3} r={}]> (sy "abc")[n='b' l={'a' 'c'} r={}]
Discussion
sy
is an alias for si:nl
.
++nl
Noun-to-container operations
Core whose arms contain functions that create various typed nouns from raw nouns.
Source
++ nl|%
++le:nl
Construct list
Takes a null-terminated noun and produces a list
.
Accepts
a
is a null-terminated noun.
Produces
A list.
Source
++ le|* a=(list)^+ =< $|@ ++ $ ?:(*? ~ [i=(snag 0 a) t=$])--a
Examples
> (le:nl [1 2 3 ~])~[1 2 3]> (le:nl "abc")~['a' 'b' 'c']
++my:nl
Construct map
Takes a null-terminated noun and produces a map
of the same type of the p
and q
passed in.
Accepts
a
is a noun composed of ordered pairs and terminated with ~
.
Produces
A map.
Source
++ my|* a=(list (pair))=> .(a ^+((le a) a))(~(gas by `(map _p.i.-.a _q.i.-.a)`~) a)
Examples
> (my:nl [['a' 1] ['b' 2] ~])[n=[p='b' q=2] l={[p='a' q=1]} r={}]
++si:nl
Construct set
Takes a null-terminated noun and produces a set
.
Accepts
a
is a null-terminated noun.
Produces
A set.
Source
++ si|* a=(list)=> .(a ^+((le a) a))(~(gas in `(set _i.-.a)`~) a)
Examples
> (si:nl `(list [@t *])`[['a' 1] ['b' [2 3]] ~])[n=['b' [2 3]] l={['a' 1]} r={}]
++snag:nl
Index
Produces the element at the index a
of null-terminated noun b
and failing if the noun is null. Lists are 0-indexed.
Accepts
a
is a noun.
b
is a null-terminated noun.
Produces
A noun.
Sources
++ snag|* [a=@ b=(list)]?~ b~_ leaf+"snag-fail"!!?: =(0 a) i.b$(b t.b, a (dec a))
Examples
> =b [[2 3] [1 4] ~]> (snag:nl 0 b)[2 3]> (snag:nl 2 b)! snag-fail! exit
++weld:nl
Concatenate
Produces a list that is the concatenation of null-terminated nouns a
and b
.
Accepts
a
is a null-terminated noun.
b
is a null-terminated noun.
Produces
A list.
Source
++ weld|* [a=(list) b=(list)]=> .(a ^+((le a) a), b ^+((le b) b))=+ 42|-?~ a b[i=i.a t=$(a t.a)]
Examples
> =b [[2 3] [1 4] ~]> (weld:nl b [8 9 ~])[i=[2 3] t=[i=[1 4] t=~[8 9]]]