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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#SRC: JCON
# set test
procedure main()
local x, y, z
wset("empty", x := set())
write(type(x))
write(image(?x)) # should fail
write(image(member(x))) # should fail
wset("insert", insert(x))
write(image(?x)) # should write &null
write(image(member(x))) # should write &null
write(image(member(x,3))) # should write &null
wset("insert", insert(x))
wset("delete", delete(x))
wset("delete", delete(x))
write()
wset("x", x := set([1,2,4]))
wset("y", y := set([1,2,5]))
wset("x ++ y", x ++ y)
wset("y ++ x", y ++ x)
wset("x -- y", x -- y)
wset("y -- x", y -- x)
wset("x ** y", x ** y)
wset("y ** x", y ** x)
write()
wset("empty", x := set(&null))
wset("+ 1", insert(x, 1,4,7)) # only inserts 1
wset("+ 2", insert(x, 2))
wset("+ c", insert(x, "c"))
wset("- 3", delete(x, 3)) # deletes nothing
wset("- 1", delete(x, 1, 2)) # only deletes 1
wset("- 1", delete(x, 1))
wset("+ 2", insert(x, 2))
wset("+ 1", insert(x, 1))
wset("+ 7.0", insert(x, 7.0))
wset("+ 7.0", insert(x, 7.0))
wset("+ 'cs'", insert(x, 'cs'))
wset("+ 'cs'", insert(x, 'cs'))
wset("x =", x)
write()
wset("3,a,4", y := set([3,"a",4]))
wset("y ++ x", y ++ x)
wset("y ** x", y ** x)
wset("y -- x", y -- x)
wset("x -- y", x -- y)
write()
every insert(z := set(), !y)
wset("z from !y", z)
write()
x := set([3,1,4,1,5,9,2,6,5,3,5])
y := copy(x)
delete(x, 4)
insert(x, 7)
insert(y, 0)
delete(y, 1)
wset("x", x)
wset("y", y)
end
# dump a set, assuming it contains nothing other than:
# &null, 0 - 9, 0.0 - 9.0, "", "a" - "e", '', 'cs'
procedure wset(label, S)
local x
writes(right(label, 10), " :", right(*S, 2), " :")
every x := &null | (0 to 9) | 0.0+(0 to 9) | "" | !"abcde" | '' | 'cs' do
writes(" ", image(member(S, x)))
write()
return
end
|