summaryrefslogtreecommitdiff
path: root/test.pez
blob: 61034f77f28a694a8852f319cb633ba344497aea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
@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}]
}[]