diff options
| -rw-r--r-- | bench.pez | 2 | ||||
| -rw-r--r-- | pez.c | 8 | ||||
| -rw-r--r-- | test.pez | 26 | ||||
| -rw-r--r-- | ycomb.pez | 4 |
4 files changed, 20 insertions, 20 deletions
@@ -1,4 +1,4 @@ -@fib: {[n] +@fib: $[n] { n < 2 ? n : fib[n - 2] + fib[n - 1] } @@ -3039,6 +3039,8 @@ lambdaexpr(Comp *cm, const char *name) } } + ETRY(expectspchr(cm, '{')); + ETRY(block(cm, '}')); ETRY(compop(cm, Oret)); ETRY(fincompfn(cm)); @@ -3268,7 +3270,7 @@ primaryexpr(Comp *cm) } return 1; - case '{': + case '$': return lambdaexpr(cm, NULL); case '#': @@ -4036,7 +4038,7 @@ decl(Comp *cm, struct local **pl, bool nofold) return comperr(cm, c, "expected ':' or '='"), 0; } - if (matchspchr(cm, '{')) { + if (matchspchr(cm, '$')) { // named fn, possibly recursive TRY(l = addlocal(cm, &idx, name, mutable, cm->has_k && !mutable, cm->k)); TRY(lambdaexpr(cm, name)); @@ -4215,7 +4217,7 @@ stmt(Comp *cm) TRY(expectspchr(cm, '=')); TRY(box_str(cm->cx, &key, name, strlen(name))); TRY(compconst(cm, key)); - if (matchspchr(cm, '{')) { + if (matchspchr(cm, '$')) { TRY(lambdaexpr(cm, name)); // named fn } else { TRY(expr(cm)); // initializer @@ -1,19 +1,19 @@ -@Box: {[value] +@Box: $[value] { dilambda[ - { value }, - {[new] value = new } + ${ value }, + $[new] { value = new } ] } -@Array2d: {[w, h] +@Array2d: $[w, h] { @data: array#new[w * h, 0] dilambda[ - {[x, y] data[x + (y * w)] }, - {[x, y, new] data[x + (y * w)] = new } + $[x, y] { data[x + (y * w)] }, + $[x, y, new] { data[x + (y * w)] = new } ] } -@print: {[x] printf["x -> %a\n", x] } +@print: $[x] { printf["x -> %a\n", x] } @x = Box[-7] x[] *= 2 print[x[]] @@ -27,7 +27,7 @@ FOR [@x: 0][< 10][+ 1] printf["%a == %a\n", m[3,7], 3^7] -@add: {[*] +@add: $[*] { @acc = 0 FOR [@i: 0][< SEL$][+ 1] acc += SEL[i] @@ -36,13 +36,11 @@ printf["%a == %a\n", m[3,7], 3^7] printf["4+1+3: %a\n", add[4,1,3]] -@gather: {[*] - SEL[*] -} +@gather: $[*] { SEL[*] } printf["test %a\n", gather[-1, (), 'x]] -@map: {[f, xs] +@map: $[f, xs] { @ys: array#new[xs.len] FOR [@i: 0][< xs.len][+ 1] ys[i] = f[xs[i]] @@ -51,7 +49,7 @@ printf["test %a\n", gather[-1, (), 'x]] printf["maps %a\n", map["abcd", #[1,2,0]]] -@inspect: {[m] +@inspect: $[m] { printf["%a\n", m] } @@ -60,6 +58,6 @@ r[0]=r printf["r: "] inspect[r] printf["r.a -> %a\n", r[0].a] -{ +${ inspect [#{0 3,"a" 3}] }[] @@ -1,5 +1,5 @@ -@Y: {[f] {[i] i[i]}[{[i] f[{[x] i[i][x]}]}]} +@Y: $[f]{$[i]{i[i]}[$[i]{f[$[x]{i[i][x]}]}]} -@fact: {[n] Y[{[f] {[n] n == 0 ? 1 : n * f[n - 1]}}][n]} +@fact: $[n] {Y[$[f]{$[n] {n == 0 ? 1 : n * f[n - 1]}}][n]} printf["%a\n", fact[5]] |