1 implementation module semantic_functions
9 e :: Int [Int] -> [Int]
16 add [a:b:rest] = [b+a:rest]
21 sub [a:b:rest] = [b-a:rest]
26 mul [a:b:rest] = [b*a:rest]
31 div [a:b:rest] = [b/a:rest]
33 modc :: [Int] -> [Int]
36 modc[a:b:rest] = [modulo b a:rest]
40 dup[a:rest] = [a:a:rest]
42 notc :: [Int] -> [Int]
44 notc[0:rest] = [1:rest]
45 notc[_:rest] = [0:rest]
54 roll :: [Int] -> [Int]
58 |modulo a b == 0 = rest
60 |b > length rest = rest
61 |a == 1 = roll1 [b:rest]
62 |a > 0 = roll ([a-1] ++ [b] ++ roll1 [b:rest])
63 |a < 0 = roll ([modulo a b] ++ [b:rest])
65 roll1 :: [Int] -> [Int]
67 roll1 [b:c:d:rest] = [d] ++ roll1[b-1:c:rest]
69 //outnum_so :: stack_output stack -> stack_output
70 outnum_so :: [Int] [Int] -> [Int]
72 outnum_so so [a:rest] = add_to_s a so
74 //innum_s :: stack_input stack -> stack
75 innum_s :: [Int] [Int] -> [Int]
77 innum_s [a:rest] s = add_to_s a s
80 modulo :: Int Int -> Int
84 |otherwise = modulo (a-b) b
86 add_to_s :: a [a] -> [a]
88 add_to_s a b = b ++ [a]
92 eenfaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2[1,1])))))))))))))))
94 tweefaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 tweefaculteit1)))))))))))))))
95 tweefaculteit1 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup tweefaculteit2))))))))))))))))))))))))))))
96 tweefaculteit2 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(e 1 (e 2 [])))))))))))))))))
98 vijffaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit1)))))))))))))))
99 vijffaculteit1 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit2))))))))))))))))))))))))))))
100 vijffaculteit2 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit3)))))))))))))))
101 vijffaculteit3 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit4))))))))))))))))))))))))))))
102 vijffaculteit4 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit5)))))))))))))))
103 vijffaculteit5 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit6))))))))))))))))))))))))))))
104 vijffaculteit6 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit7)))))))))))))))
105 vijffaculteit7 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup [1,5]))))))))))))))))))))))))))))
106 //[1,5] is the outcome of vijffaculteit8, but it won't run if not substituted
107 vijffaculteit8 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(e 1 (e 5 [])))))))))))))))))