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]
96 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])))))))))))))))
98 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)))))))))))))))
99 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))))))))))))))))))))))))))))
100 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 stack)))))))))))))))))
102 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)))))))))))))))
103 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))))))))))))))))))))))))))))
104 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)))))))))))))))
105 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))))))))))))))))))))))))))))
106 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)))))))))))))))
107 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))))))))))))))))))))))))))))
108 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)))))))))))))))
109 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]))))))))))))))))))))))))))))
110 //[1,5] is the outcome of vijffaculteit8, but it won't run if not substituted
111 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 y (e x stack)))))))))))))))))