@Box: $[value] { dilambda[ ${ value }, $[new] { value = new } ] } @Array2d: $[w, h] { @data: array#new[w * h, 0] dilambda[ $[x, y] { data[x + (y * w)] }, $[x, y, new] { data[x + (y * w)] = new } ] } @print: $[x] { printf["x -> %a\n", x] } @x = Box[-7] x[] *= 2 print[x[]] x[] = 'abcdef print[x[]] @m: Array2d[10, 10] FOR [@x: 0][< 10][+ 1] FOR [@y: 0][< 10][+ 1] m[x, y] = x ^ y printf["%a == %a\n", m[3,7], 3^7] @add: $[*] { @acc = 0 FOR [@i: 0][< SEL$][+ 1] acc += SEL[i] acc } printf["4+1+3: %a\n", add[4,1,3]] @gather: $[*] { SEL[*] } printf["test %a\n", gather[-1, (), 'x]] @map: $[f, xs] { @ys: array#new[xs.len] FOR [@i: 0][< xs.len][+ 1] ys[i] = f[xs[i]] ys } printf["maps %a\n", map["abcd", #[1,2,0]]] @inspect: $[m] { printf["%a\n", m] } @r: #{"a" 1, "b" 2, 0 "a"} r[0]=r printf["r: "] inspect[r] printf["r.a -> %a\n", r[0].a] ${ inspect [#{0 3,"a" 3}] }[]