!!
puzzles-2
%+ roll %+ turn "hello world" |= c=@ ?: |(=(c 'o') =(c 'e')) 1 0 add

hidden vowels

glossary

%+ calls a gate that takes two arguments.

%+(add 2 3) is 5.

irregular forms:

(gate a b) is %+(gate a b)

roll folds a gate across a list into one value, left to right.

(roll `(list @)`~[1 2 3 4] add) is 10.

turn runs a gate over every element of a list, collecting the results - a map.

(turn `(list @)`~[1 2 3] |=(n=@ (mul 2 n))) is ~[2 4 6].

|= makes a gate: a function with one named sample, then a body.

the body runs with the sample bound.

call the gate to run it.

(|=(a=@ (add a 1)) 4) is 5.

$= wraps a mold with a face, naming the value it produces.

$=(x @) is the mold x=@.

?: is if-then-else: it picks its first branch when the test is yes, the second when no.

?:((gth 3 5) 10 20) is 20.

?| is logical or: yes when any test is yes.

?|((gth 1 3) (lth 2 9)) is %.y.

irregular forms:

|(a b) is ?|(a b)

.= tests two nouns for equality, giving a loobean.

.=(3 3) is %.y, and .=(3 4) is %.n.

irregular forms:

=(a b) is .=(a b)

add sums two atoms.

(add 2 3) is 5.