diff --git a/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix b/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix new file mode 100644 index 0000000..8c1076f --- /dev/null +++ b/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""1 0 11))(end_p(""1 0 20)))))()))(position((start_p(""1 0 11))(end_p(""1 0 20)))))((value(Literal((value(LInt 999))(position((start_p(""1 0 22))(end_p(""1 0 25)))))))(position((start_p(""1 0 21))(end_p(""1 0 26)))))))(position((start_p(""1 0 11))(end_p(""1 0 26)))))))))(position((start_p(""1 0 0))(end_p(""1 0 26)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix.human-readable new file mode 100644 index 0000000..9c01e18 --- /dev/null +++ b/flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix.human-readable @@ -0,0 +1 @@ +let main = print_int (999) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/01-arithmetic-01.expected b/flap/tests/02-Interpreter/01-arithmetic-01.expected new file mode 100644 index 0000000..cf5106d --- /dev/null +++ b/flap/tests/02-Interpreter/01-arithmetic-01.expected @@ -0,0 +1 @@ +999 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix b/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix new file mode 100644 index 0000000..57ad3ea --- /dev/null +++ b/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 11))(end_p(""1 0 12)))))()))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(Literal((value(LInt 72))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))))(position((start_p(""1 0 0))(end_p(""1 0 14)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 15 19))(end_p(""2 15 23)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 15 26))(end_p(""2 15 35)))))()))(position((start_p(""2 15 26))(end_p(""2 15 35)))))((value(Variable((value(Id x))(position((start_p(""2 15 37))(end_p(""2 15 38)))))()))(position((start_p(""2 15 36))(end_p(""2 15 39)))))))(position((start_p(""2 15 26))(end_p(""2 15 39)))))))))(position((start_p(""2 15 15))(end_p(""2 15 39)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix.human-readable new file mode 100644 index 0000000..6a0608a --- /dev/null +++ b/flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let x = 72 + 1 +let test = print_int (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/02-arithmetic-02.expected b/flap/tests/02-Interpreter/02-arithmetic-02.expected new file mode 100644 index 0000000..e77a963 --- /dev/null +++ b/flap/tests/02-Interpreter/02-arithmetic-02.expected @@ -0,0 +1 @@ +73 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix b/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix new file mode 100644 index 0000000..45bbd81 --- /dev/null +++ b/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 11))(end_p(""1 0 12)))))()))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(Literal((value(LInt 72))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))))(position((start_p(""1 0 0))(end_p(""1 0 14)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 15 19))(end_p(""2 15 23)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 15 26))(end_p(""2 15 35)))))()))(position((start_p(""2 15 26))(end_p(""2 15 35)))))((value(Variable((value(Id x))(position((start_p(""2 15 37))(end_p(""2 15 38)))))()))(position((start_p(""2 15 36))(end_p(""2 15 39)))))))(position((start_p(""2 15 26))(end_p(""2 15 39)))))))))(position((start_p(""2 15 15))(end_p(""2 15 39)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix.human-readable new file mode 100644 index 0000000..022a0f0 --- /dev/null +++ b/flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let x = 72 - 1 +let test = print_int (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/03-arithmetic-03.expected b/flap/tests/02-Interpreter/03-arithmetic-03.expected new file mode 100644 index 0000000..2fb681e --- /dev/null +++ b/flap/tests/02-Interpreter/03-arithmetic-03.expected @@ -0,0 +1 @@ +71 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix b/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix new file mode 100644 index 0000000..ecf4cab --- /dev/null +++ b/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 11))(end_p(""1 0 12)))))()))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(Literal((value(LInt 37))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))))(position((start_p(""1 0 0))(end_p(""1 0 14)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 15 19))(end_p(""2 15 23)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 15 26))(end_p(""2 15 35)))))()))(position((start_p(""2 15 26))(end_p(""2 15 35)))))((value(Variable((value(Id x))(position((start_p(""2 15 37))(end_p(""2 15 38)))))()))(position((start_p(""2 15 36))(end_p(""2 15 39)))))))(position((start_p(""2 15 26))(end_p(""2 15 39)))))))))(position((start_p(""2 15 15))(end_p(""2 15 39)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix.human-readable new file mode 100644 index 0000000..5a88af7 --- /dev/null +++ b/flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let x = 37 * 2 +let test = print_int (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/04-arithmetic-04.expected b/flap/tests/02-Interpreter/04-arithmetic-04.expected new file mode 100644 index 0000000..0aeb548 --- /dev/null +++ b/flap/tests/02-Interpreter/04-arithmetic-04.expected @@ -0,0 +1 @@ +74 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix b/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix new file mode 100644 index 0000000..fd6ef86 --- /dev/null +++ b/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 11))(end_p(""1 0 12)))))()))(position((start_p(""1 0 11))(end_p(""1 0 12)))))((value(Literal((value(LInt 73))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))))(position((start_p(""1 0 8))(end_p(""1 0 10)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))))(position((start_p(""1 0 0))(end_p(""1 0 14)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 15 19))(end_p(""2 15 23)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 15 26))(end_p(""2 15 35)))))()))(position((start_p(""2 15 26))(end_p(""2 15 35)))))((value(Variable((value(Id x))(position((start_p(""2 15 37))(end_p(""2 15 38)))))()))(position((start_p(""2 15 36))(end_p(""2 15 39)))))))(position((start_p(""2 15 26))(end_p(""2 15 39)))))))))(position((start_p(""2 15 15))(end_p(""2 15 39)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix.human-readable b/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix.human-readable new file mode 100644 index 0000000..9b4891b --- /dev/null +++ b/flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let x = 73 / 2 +let test = print_int (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/05-arithmetic-05.expected b/flap/tests/02-Interpreter/05-arithmetic-05.expected new file mode 100644 index 0000000..dce6588 --- /dev/null +++ b/flap/tests/02-Interpreter/05-arithmetic-05.expected @@ -0,0 +1 @@ +36 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix b/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix new file mode 100644 index 0000000..b7c3b36 --- /dev/null +++ b/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id wow))(position((start_p(""1 0 4))(end_p(""1 0 7)))))()((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 40))(end_p(""1 0 41)))))()))(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 32))(end_p(""1 0 33)))))()))(position((start_p(""1 0 32))(end_p(""1 0 33)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 20))(end_p(""1 0 21)))))()))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 12))(end_p(""1 0 13)))))()))(position((start_p(""1 0 12))(end_p(""1 0 13)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 10))(end_p(""1 0 11)))))))(position((start_p(""1 0 10))(end_p(""1 0 11)))))))(position((start_p(""1 0 10))(end_p(""1 0 11)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 3))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))(position((start_p(""1 0 10))(end_p(""1 0 19)))))))(position((start_p(""1 0 10))(end_p(""1 0 19)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 28))(end_p(""1 0 29)))))()))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 24))(end_p(""1 0 25)))))()))(position((start_p(""1 0 24))(end_p(""1 0 25)))))((value(Literal((value(LInt 4))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))((value(Literal((value(LInt 5))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 22))(end_p(""1 0 27)))))))(position((start_p(""1 0 22))(end_p(""1 0 27)))))((value(Literal((value(LInt 6))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 22))(end_p(""1 0 31)))))))(position((start_p(""1 0 10))(end_p(""1 0 31)))))))(position((start_p(""1 0 10))(end_p(""1 0 31)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 36))(end_p(""1 0 37)))))()))(position((start_p(""1 0 36))(end_p(""1 0 37)))))((value(Literal((value(LInt 7))(position((start_p(""1 0 34))(end_p(""1 0 35)))))))(position((start_p(""1 0 34))(end_p(""1 0 35)))))))(position((start_p(""1 0 34))(end_p(""1 0 35)))))((value(Literal((value(LInt 8))(position((start_p(""1 0 38))(end_p(""1 0 39)))))))(position((start_p(""1 0 38))(end_p(""1 0 39)))))))(position((start_p(""1 0 34))(end_p(""1 0 39)))))))(position((start_p(""1 0 10))(end_p(""1 0 39)))))))(position((start_p(""1 0 10))(end_p(""1 0 39)))))((value(Literal((value(LInt 9))(position((start_p(""1 0 42))(end_p(""1 0 43)))))))(position((start_p(""1 0 42))(end_p(""1 0 43)))))))(position((start_p(""1 0 10))(end_p(""1 0 43)))))))))(position((start_p(""1 0 0))(end_p(""1 0 43)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 44 48))(end_p(""2 44 52)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 44 55))(end_p(""2 44 64)))))()))(position((start_p(""2 44 55))(end_p(""2 44 64)))))((value(Variable((value(Id wow))(position((start_p(""2 44 66))(end_p(""2 44 69)))))()))(position((start_p(""2 44 65))(end_p(""2 44 70)))))))(position((start_p(""2 44 55))(end_p(""2 44 70)))))))))(position((start_p(""2 44 44))(end_p(""2 44 70)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix.human-readable b/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix.human-readable new file mode 100644 index 0000000..fb99e7d --- /dev/null +++ b/flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let wow = 1 + 2 * 3 - 4 / 5 * 6 - 7 * 8 + 9 +let test = print_int (wow) diff --git a/flap/tests/02-Interpreter/06-arithmetic-06.expected b/flap/tests/02-Interpreter/06-arithmetic-06.expected new file mode 100644 index 0000000..f64400d --- /dev/null +++ b/flap/tests/02-Interpreter/06-arithmetic-06.expected @@ -0,0 +1 @@ +-40 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix b/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix new file mode 100644 index 0000000..9903716 --- /dev/null +++ b/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id overflow))(position((start_p(""1 0 4))(end_p(""1 0 12)))))()((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 39))(end_p(""1 0 40)))))()))(position((start_p(""1 0 39))(end_p(""1 0 40)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 26))(end_p(""1 0 27)))))()))(position((start_p(""1 0 26))(end_p(""1 0 27)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 15))(end_p(""1 0 25)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 28))(end_p(""1 0 38)))))))(position((start_p(""1 0 28))(end_p(""1 0 38)))))))(position((start_p(""1 0 15))(end_p(""1 0 38)))))))(position((start_p(""1 0 15))(end_p(""1 0 38)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 41))(end_p(""1 0 42)))))))(position((start_p(""1 0 41))(end_p(""1 0 42)))))))(position((start_p(""1 0 15))(end_p(""1 0 42)))))))))(position((start_p(""1 0 0))(end_p(""1 0 42)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""2 43 47))(end_p(""2 43 51)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 43 54))(end_p(""2 43 63)))))()))(position((start_p(""2 43 54))(end_p(""2 43 63)))))((value(Variable((value(Id overflow))(position((start_p(""2 43 65))(end_p(""2 43 73)))))()))(position((start_p(""2 43 64))(end_p(""2 43 74)))))))(position((start_p(""2 43 54))(end_p(""2 43 74)))))))))(position((start_p(""2 43 43))(end_p(""2 43 74)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix.human-readable b/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix.human-readable new file mode 100644 index 0000000..5bd22fe --- /dev/null +++ b/flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let overflow = 4294967296 * 4294967296 + 1 +let main = print_int (overflow) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/07-arithmetic-07.expected b/flap/tests/02-Interpreter/07-arithmetic-07.expected new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/flap/tests/02-Interpreter/07-arithmetic-07.expected @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix b/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix new file mode 100644 index 0000000..6cd5427 --- /dev/null +++ b/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id overflow))(position((start_p(""1 0 4))(end_p(""1 0 12)))))()((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 45))(end_p(""1 0 46)))))()))(position((start_p(""1 0 45))(end_p(""1 0 46)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 26))(end_p(""1 0 27)))))()))(position((start_p(""1 0 26))(end_p(""1 0 27)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 15))(end_p(""1 0 25)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))))(position((start_p(""1 0 15))(end_p(""1 0 25)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 40))(end_p(""1 0 41)))))()))(position((start_p(""1 0 40))(end_p(""1 0 41)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 29))(end_p(""1 0 39)))))))(position((start_p(""1 0 29))(end_p(""1 0 39)))))))(position((start_p(""1 0 29))(end_p(""1 0 39)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 42))(end_p(""1 0 43)))))))(position((start_p(""1 0 42))(end_p(""1 0 43)))))))(position((start_p(""1 0 28))(end_p(""1 0 44)))))))(position((start_p(""1 0 15))(end_p(""1 0 44)))))))(position((start_p(""1 0 15))(end_p(""1 0 44)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 78))(end_p(""1 0 79)))))()))(position((start_p(""1 0 78))(end_p(""1 0 79)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 59))(end_p(""1 0 60)))))()))(position((start_p(""1 0 59))(end_p(""1 0 60)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 48))(end_p(""1 0 58)))))))(position((start_p(""1 0 48))(end_p(""1 0 58)))))))(position((start_p(""1 0 48))(end_p(""1 0 58)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 73))(end_p(""1 0 74)))))()))(position((start_p(""1 0 73))(end_p(""1 0 74)))))((value(Literal((value(LInt 4294967296))(position((start_p(""1 0 62))(end_p(""1 0 72)))))))(position((start_p(""1 0 62))(end_p(""1 0 72)))))))(position((start_p(""1 0 62))(end_p(""1 0 72)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 75))(end_p(""1 0 76)))))))(position((start_p(""1 0 75))(end_p(""1 0 76)))))))(position((start_p(""1 0 61))(end_p(""1 0 77)))))))(position((start_p(""1 0 48))(end_p(""1 0 77)))))))(position((start_p(""1 0 48))(end_p(""1 0 77)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 80))(end_p(""1 0 81)))))))(position((start_p(""1 0 80))(end_p(""1 0 81)))))))(position((start_p(""1 0 47))(end_p(""1 0 82)))))))(position((start_p(""1 0 15))(end_p(""1 0 82)))))))))(position((start_p(""1 0 0))(end_p(""1 0 82)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""2 83 87))(end_p(""2 83 91)))))()((value(Apply((value(Variable((value(Id print_int))(position((start_p(""2 83 94))(end_p(""2 83 103)))))()))(position((start_p(""2 83 94))(end_p(""2 83 103)))))((value(Variable((value(Id overflow))(position((start_p(""2 83 105))(end_p(""2 83 113)))))()))(position((start_p(""2 83 104))(end_p(""2 83 114)))))))(position((start_p(""2 83 94))(end_p(""2 83 114)))))))))(position((start_p(""2 83 83))(end_p(""2 83 114)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix.human-readable b/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix.human-readable new file mode 100644 index 0000000..36eeb62 --- /dev/null +++ b/flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let overflow = 4294967296 * (4294967296 / 2) + (4294967296 * (4294967296 / 2) - 1) +let main = print_int (overflow) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/08-arithmetic-08.expected b/flap/tests/02-Interpreter/08-arithmetic-08.expected new file mode 100644 index 0000000..d7d17fc --- /dev/null +++ b/flap/tests/02-Interpreter/08-arithmetic-08.expected @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/flap/tests/02-Interpreter/09-boolean-01.eval.hopix b/flap/tests/02-Interpreter/09-boolean-01.eval.hopix new file mode 100644 index 0000000..d2605c0 --- /dev/null +++ b/flap/tests/02-Interpreter/09-boolean-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id btrue))(position((start_p(""1 0 4))(end_p(""1 0 9)))))()((value(Variable((value(Id true))(position((start_p(""1 0 12))(end_p(""1 0 16)))))()))(position((start_p(""1 0 12))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id bfalse))(position((start_p(""2 17 21))(end_p(""2 17 27)))))()((value(Variable((value(Id false))(position((start_p(""2 17 30))(end_p(""2 17 35)))))()))(position((start_p(""2 17 30))(end_p(""2 17 35)))))))))(position((start_p(""2 17 17))(end_p(""2 17 35)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""3 36 40))(end_p(""3 36 44)))))()((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 36 47))(end_p(""3 36 59)))))()))(position((start_p(""3 36 47))(end_p(""3 36 59)))))((value(Literal((value(LString"OK\n"))(position((start_p(""3 36 66))(end_p(""3 36 67)))))))(position((start_p(""3 36 60))(end_p(""3 36 68)))))))(position((start_p(""3 36 47))(end_p(""3 36 68)))))))))(position((start_p(""3 36 36))(end_p(""3 36 68)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/09-boolean-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/09-boolean-01.eval.hopix.human-readable new file mode 100644 index 0000000..b2d9eaf --- /dev/null +++ b/flap/tests/02-Interpreter/09-boolean-01.eval.hopix.human-readable @@ -0,0 +1,3 @@ +let btrue = true +let bfalse = false +let test = print_string ("OK\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/09-boolean-01.expected b/flap/tests/02-Interpreter/09-boolean-01.expected new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/flap/tests/02-Interpreter/09-boolean-01.expected @@ -0,0 +1 @@ +OK diff --git a/flap/tests/02-Interpreter/10-boolean-02.eval.hopix b/flap/tests/02-Interpreter/10-boolean-02.eval.hopix new file mode 100644 index 0000000..650b9d8 --- /dev/null +++ b/flap/tests/02-Interpreter/10-boolean-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id b))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Variable((value(Id true))(position((start_p(""1 0 8))(end_p(""1 0 12)))))()))(position((start_p(""1 0 8))(end_p(""1 0 12)))))))))(position((start_p(""1 0 0))(end_p(""1 0 12)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 13 17))(end_p(""2 13 21)))))()((value(IfThenElse((value(Variable((value(Id b))(position((start_p(""2 13 28))(end_p(""2 13 29)))))()))(position((start_p(""2 13 27))(end_p(""2 13 30)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 13 38))(end_p(""2 13 50)))))()))(position((start_p(""2 13 38))(end_p(""2 13 50)))))((value(Literal((value(LString"OK\n"))(position((start_p(""2 13 57))(end_p(""2 13 58)))))))(position((start_p(""2 13 51))(end_p(""2 13 59)))))))(position((start_p(""2 13 38))(end_p(""2 13 59)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 13 69))(end_p(""2 13 81)))))()))(position((start_p(""2 13 69))(end_p(""2 13 81)))))((value(Literal((value(LString"KO\n"))(position((start_p(""2 13 88))(end_p(""2 13 89)))))))(position((start_p(""2 13 82))(end_p(""2 13 90)))))))(position((start_p(""2 13 69))(end_p(""2 13 90)))))))(position((start_p(""2 13 24))(end_p(""2 13 92)))))))))(position((start_p(""2 13 13))(end_p(""2 13 92)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/10-boolean-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/10-boolean-02.eval.hopix.human-readable new file mode 100644 index 0000000..1b50c7e --- /dev/null +++ b/flap/tests/02-Interpreter/10-boolean-02.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let b = true +let test = if (b) then { print_string ("OK\n") } else { print_string ("KO\n") } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/10-boolean-02.expected b/flap/tests/02-Interpreter/10-boolean-02.expected new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/flap/tests/02-Interpreter/10-boolean-02.expected @@ -0,0 +1 @@ +OK diff --git a/flap/tests/02-Interpreter/11-boolean-03.eval.hopix b/flap/tests/02-Interpreter/11-boolean-03.eval.hopix new file mode 100644 index 0000000..1864506 --- /dev/null +++ b/flap/tests/02-Interpreter/11-boolean-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id b))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""1 0 11))(end_p(""1 0 13)))))()))(position((start_p(""1 0 11))(end_p(""1 0 13)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 9))(end_p(""1 0 10)))))))(position((start_p(""1 0 9))(end_p(""1 0 10)))))))(position((start_p(""1 0 9))(end_p(""1 0 10)))))((value(Literal((value(LInt 0))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 17 21))(end_p(""2 17 25)))))()((value(IfThenElse((value(Variable((value(Id b))(position((start_p(""2 17 32))(end_p(""2 17 33)))))()))(position((start_p(""2 17 31))(end_p(""2 17 34)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 17 42))(end_p(""2 17 54)))))()))(position((start_p(""2 17 42))(end_p(""2 17 54)))))((value(Literal((value(LString"TOTO\n"))(position((start_p(""2 17 63))(end_p(""2 17 64)))))))(position((start_p(""2 17 55))(end_p(""2 17 65)))))))(position((start_p(""2 17 42))(end_p(""2 17 65)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 17 75))(end_p(""2 17 87)))))()))(position((start_p(""2 17 75))(end_p(""2 17 87)))))((value(Literal((value(LString"KO\n"))(position((start_p(""2 17 94))(end_p(""2 17 95)))))))(position((start_p(""2 17 88))(end_p(""2 17 96)))))))(position((start_p(""2 17 75))(end_p(""2 17 96)))))))(position((start_p(""2 17 28))(end_p(""2 17 98)))))))))(position((start_p(""2 17 17))(end_p(""2 17 98)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/11-boolean-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/11-boolean-03.eval.hopix.human-readable new file mode 100644 index 0000000..26731ae --- /dev/null +++ b/flap/tests/02-Interpreter/11-boolean-03.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let b = (0 =? 0) +let test = if (b) then { print_string ("TOTO\n") } else { print_string ("KO\n") } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/11-boolean-03.expected b/flap/tests/02-Interpreter/11-boolean-03.expected new file mode 100644 index 0000000..379e8b0 --- /dev/null +++ b/flap/tests/02-Interpreter/11-boolean-03.expected @@ -0,0 +1 @@ +TOTO diff --git a/flap/tests/02-Interpreter/12-boolean-04.eval.hopix b/flap/tests/02-Interpreter/12-boolean-04.eval.hopix new file mode 100644 index 0000000..5024a07 --- /dev/null +++ b/flap/tests/02-Interpreter/12-boolean-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id b))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Apply((value(Apply((value(Variable((value(Id ` }<>, b = 42 } +let z = u.a.a.a.x +let test = print_string (z) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/24-field-03.expected b/flap/tests/02-Interpreter/24-field-03.expected new file mode 100644 index 0000000..8073693 --- /dev/null +++ b/flap/tests/02-Interpreter/24-field-03.expected @@ -0,0 +1 @@ +Field extraction is still a success! diff --git a/flap/tests/02-Interpreter/25-sequence-01.eval.hopix b/flap/tests/02-Interpreter/25-sequence-01.eval.hopix new file mode 100644 index 0000000..d53769e --- /dev/null +++ b/flap/tests/02-Interpreter/25-sequence-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 11 13))(end_p(""2 11 25)))))()))(position((start_p(""2 11 13))(end_p(""2 11 25)))))((value(Literal((value(LString"Two actions..."))(position((start_p(""2 11 42))(end_p(""2 11 43)))))))(position((start_p(""2 11 26))(end_p(""2 11 44)))))))(position((start_p(""2 11 13))(end_p(""2 11 44)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 46 48))(end_p(""3 46 60)))))()))(position((start_p(""3 46 48))(end_p(""3 46 60)))))((value(Literal((value(LString"...are separated by a semicolon!\n"))(position((start_p(""3 46 97))(end_p(""3 46 98)))))))(position((start_p(""3 46 61))(end_p(""3 46 99)))))))(position((start_p(""3 46 48))(end_p(""3 46 99))))))))(position((start_p(""2 11 13))(end_p(""3 46 99)))))))))(position((start_p(""1 0 0))(end_p(""3 46 99)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/25-sequence-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/25-sequence-01.eval.hopix.human-readable new file mode 100644 index 0000000..4c57f87 --- /dev/null +++ b/flap/tests/02-Interpreter/25-sequence-01.eval.hopix.human-readable @@ -0,0 +1,3 @@ +let test = + print_string ("Two actions..."); + print_string ("...are separated by a semicolon!\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/25-sequence-01.expected b/flap/tests/02-Interpreter/25-sequence-01.expected new file mode 100644 index 0000000..371da8d --- /dev/null +++ b/flap/tests/02-Interpreter/25-sequence-01.expected @@ -0,0 +1 @@ +Two actions......are separated by a semicolon! diff --git a/flap/tests/02-Interpreter/26-sequence-02.eval.hopix b/flap/tests/02-Interpreter/26-sequence-02.eval.hopix new file mode 100644 index 0000000..0cfcd24 --- /dev/null +++ b/flap/tests/02-Interpreter/26-sequence-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 11 15))(end_p(""2 11 27)))))()))(position((start_p(""2 11 15))(end_p(""2 11 27)))))((value(Literal((value(LString"This actually should"))(position((start_p(""2 11 50))(end_p(""2 11 51)))))))(position((start_p(""2 11 28))(end_p(""2 11 52)))))))(position((start_p(""2 11 15))(end_p(""2 11 52)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 54 58))(end_p(""3 54 70)))))()))(position((start_p(""3 54 58))(end_p(""3 54 70)))))((value(Literal((value(LString" work with"))(position((start_p(""3 54 83))(end_p(""3 54 84)))))))(position((start_p(""3 54 71))(end_p(""3 54 85)))))))(position((start_p(""3 54 58))(end_p(""3 54 85)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 87 91))(end_p(""4 87 103)))))()))(position((start_p(""4 87 91))(end_p(""4 87 103)))))((value(Literal((value(LString" any number of"))(position((start_p(""4 87 120))(end_p(""4 87 121)))))))(position((start_p(""4 87 104))(end_p(""4 87 122)))))))(position((start_p(""4 87 91))(end_p(""4 87 122)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 124 128))(end_p(""5 124 140)))))()))(position((start_p(""5 124 128))(end_p(""5 124 140)))))((value(Literal((value(LString" actions!\n"))(position((start_p(""5 124 154))(end_p(""5 124 155)))))))(position((start_p(""5 124 141))(end_p(""5 124 156)))))))(position((start_p(""5 124 128))(end_p(""5 124 156))))))))(position((start_p(""4 87 91))(end_p(""5 124 156))))))))(position((start_p(""3 54 58))(end_p(""5 124 156))))))))(position((start_p(""2 11 15))(end_p(""5 124 156)))))))))(position((start_p(""1 0 0))(end_p(""5 124 156)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/26-sequence-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/26-sequence-02.eval.hopix.human-readable new file mode 100644 index 0000000..c421980 --- /dev/null +++ b/flap/tests/02-Interpreter/26-sequence-02.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let test = + print_string ("This actually should"); + print_string (" work with"); + print_string (" any number of"); + print_string (" actions!\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/26-sequence-02.expected b/flap/tests/02-Interpreter/26-sequence-02.expected new file mode 100644 index 0000000..7689cdb --- /dev/null +++ b/flap/tests/02-Interpreter/26-sequence-02.expected @@ -0,0 +1 @@ +This actually should work with any number of actions! diff --git a/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix b/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix new file mode 100644 index 0000000..c81de41 --- /dev/null +++ b/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 17))(end_p(""2 11 18)))))()((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 43 45))(end_p(""3 43 57)))))()))(position((start_p(""3 43 45))(end_p(""3 43 57)))))((value(Variable((value(Id x))(position((start_p(""3 43 59))(end_p(""3 43 60)))))()))(position((start_p(""3 43 58))(end_p(""3 43 61)))))))(position((start_p(""3 43 45))(end_p(""3 43 61)))))))(position((start_p(""2 11 13))(end_p(""3 43 61)))))))))(position((start_p(""1 0 0))(end_p(""3 43 61)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix.human-readable new file mode 100644 index 0000000..ddfe04f --- /dev/null +++ b/flap/tests/02-Interpreter/27-local-definition-01.eval.hopix.human-readable @@ -0,0 +1,3 @@ +let test = + let x = "This test is OK.\n"; + print_string (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/27-local-definition-01.expected b/flap/tests/02-Interpreter/27-local-definition-01.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/27-local-definition-01.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix b/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix new file mode 100644 index 0000000..43e7969 --- /dev/null +++ b/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 17))(end_p(""2 11 18)))))()((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""3 43 49))(end_p(""3 43 50)))))()((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""3 43 72))(end_p(""3 43 73)))))))(position((start_p(""3 43 72))(end_p(""3 43 73)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 75 77))(end_p(""4 75 89)))))()))(position((start_p(""4 75 77))(end_p(""4 75 89)))))((value(Variable((value(Id x))(position((start_p(""4 75 91))(end_p(""4 75 92)))))()))(position((start_p(""4 75 90))(end_p(""4 75 93)))))))(position((start_p(""4 75 77))(end_p(""4 75 93)))))))(position((start_p(""3 43 45))(end_p(""4 75 93)))))))(position((start_p(""2 11 13))(end_p(""4 75 93)))))))))(position((start_p(""1 0 0))(end_p(""4 75 93)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix.human-readable new file mode 100644 index 0000000..924cbe3 --- /dev/null +++ b/flap/tests/02-Interpreter/28-local-definition-02.eval.hopix.human-readable @@ -0,0 +1,4 @@ +let test = + let x = "This test is KO.\n"; + let x = "This test is OK.\n"; + print_string (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/28-local-definition-02.expected b/flap/tests/02-Interpreter/28-local-definition-02.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/28-local-definition-02.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix b/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix new file mode 100644 index 0000000..a364527 --- /dev/null +++ b/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 17))(end_p(""2 11 18)))))()((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""3 43 49))(end_p(""3 43 50)))))()((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""3 43 72))(end_p(""3 43 73)))))))(position((start_p(""3 43 72))(end_p(""3 43 73)))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""4 75 81))(end_p(""4 75 82)))))()((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""4 75 104))(end_p(""4 75 105)))))))(position((start_p(""4 75 104))(end_p(""4 75 105)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 107 109))(end_p(""5 107 121)))))()))(position((start_p(""5 107 109))(end_p(""5 107 121)))))((value(Variable((value(Id x))(position((start_p(""5 107 123))(end_p(""5 107 124)))))()))(position((start_p(""5 107 122))(end_p(""5 107 125)))))))(position((start_p(""5 107 109))(end_p(""5 107 125)))))))(position((start_p(""4 75 77))(end_p(""5 107 125)))))))(position((start_p(""3 43 45))(end_p(""5 107 125)))))))(position((start_p(""2 11 13))(end_p(""5 107 125)))))))))(position((start_p(""1 0 0))(end_p(""5 107 125)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix.human-readable new file mode 100644 index 0000000..50c95c4 --- /dev/null +++ b/flap/tests/02-Interpreter/29-local-definition-03.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let test = + let x = "This test is KO.\n"; + let x = "This test is KO.\n"; + let x = "This test is OK.\n"; + print_string (x) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/29-local-definition-03.expected b/flap/tests/02-Interpreter/29-local-definition-03.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/29-local-definition-03.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix b/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix new file mode 100644 index 0000000..55e4772 --- /dev/null +++ b/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 17))(end_p(""2 11 18)))))()((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""3 43 49))(end_p(""3 43 50)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""4 55 63))(end_p(""4 55 64)))))()((value(Literal((value(LString"This test is"))(position((start_p(""4 55 80))(end_p(""4 55 81)))))))(position((start_p(""4 55 80))(end_p(""4 55 81)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 83 87))(end_p(""5 83 99)))))()))(position((start_p(""5 83 87))(end_p(""5 83 99)))))((value(Variable((value(Id x))(position((start_p(""5 83 101))(end_p(""5 83 102)))))()))(position((start_p(""5 83 100))(end_p(""5 83 103)))))))(position((start_p(""5 83 87))(end_p(""5 83 103)))))))(position((start_p(""3 43 53))(end_p(""6 104 107)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 109 111))(end_p(""7 109 123)))))()))(position((start_p(""7 109 111))(end_p(""7 109 123)))))((value(Literal((value(LString" OK!\n"))(position((start_p(""7 109 132))(end_p(""7 109 133)))))))(position((start_p(""7 109 124))(end_p(""7 109 134)))))))(position((start_p(""7 109 111))(end_p(""7 109 134)))))))(position((start_p(""3 43 45))(end_p(""7 109 134)))))))(position((start_p(""2 11 13))(end_p(""7 109 134)))))))))(position((start_p(""1 0 0))(end_p(""7 109 134)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix.human-readable new file mode 100644 index 0000000..2ac9f0f --- /dev/null +++ b/flap/tests/02-Interpreter/30-local-definition-04.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + let x = "This test is KO.\n"; + let x = ( + let x = "This test is"; + print_string (x) + ); + print_string (" OK!\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/30-local-definition-04.expected b/flap/tests/02-Interpreter/30-local-definition-04.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/30-local-definition-04.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix b/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix new file mode 100644 index 0000000..55e4772 --- /dev/null +++ b/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 17))(end_p(""2 11 18)))))()((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))(position((start_p(""2 11 40))(end_p(""2 11 41)))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""3 43 49))(end_p(""3 43 50)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""4 55 63))(end_p(""4 55 64)))))()((value(Literal((value(LString"This test is"))(position((start_p(""4 55 80))(end_p(""4 55 81)))))))(position((start_p(""4 55 80))(end_p(""4 55 81)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 83 87))(end_p(""5 83 99)))))()))(position((start_p(""5 83 87))(end_p(""5 83 99)))))((value(Variable((value(Id x))(position((start_p(""5 83 101))(end_p(""5 83 102)))))()))(position((start_p(""5 83 100))(end_p(""5 83 103)))))))(position((start_p(""5 83 87))(end_p(""5 83 103)))))))(position((start_p(""3 43 53))(end_p(""6 104 107)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 109 111))(end_p(""7 109 123)))))()))(position((start_p(""7 109 111))(end_p(""7 109 123)))))((value(Literal((value(LString" OK!\n"))(position((start_p(""7 109 132))(end_p(""7 109 133)))))))(position((start_p(""7 109 124))(end_p(""7 109 134)))))))(position((start_p(""7 109 111))(end_p(""7 109 134)))))))(position((start_p(""3 43 45))(end_p(""7 109 134)))))))(position((start_p(""2 11 13))(end_p(""7 109 134)))))))))(position((start_p(""1 0 0))(end_p(""7 109 134)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix.human-readable b/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix.human-readable new file mode 100644 index 0000000..2ac9f0f --- /dev/null +++ b/flap/tests/02-Interpreter/31-local-definition-05.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + let x = "This test is KO.\n"; + let x = ( + let x = "This test is"; + print_string (x) + ); + print_string (" OK!\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/31-local-definition-05.expected b/flap/tests/02-Interpreter/31-local-definition-05.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/31-local-definition-05.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/32-application.eval.hopix b/flap/tests/02-Interpreter/32-application.eval.hopix new file mode 100644 index 0000000..d2f6839 --- /dev/null +++ b/flap/tests/02-Interpreter/32-application.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id id))(position((start_p(""1 0 4))(end_p(""1 0 6)))))()((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 10))(end_p(""1 0 11)))))))(position((start_p(""1 0 10))(end_p(""1 0 11)))))((value(Variable((value(Id x))(position((start_p(""1 0 15))(end_p(""1 0 16)))))()))(position((start_p(""1 0 15))(end_p(""1 0 16))))))))(position((start_p(""1 0 9))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 17 21))(end_p(""2 17 25)))))()((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 17 28))(end_p(""2 17 40)))))()))(position((start_p(""2 17 28))(end_p(""2 17 40)))))((value(Apply((value(Variable((value(Id id))(position((start_p(""2 17 42))(end_p(""2 17 44)))))()))(position((start_p(""2 17 42))(end_p(""2 17 44)))))((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""2 17 65))(end_p(""2 17 66)))))))(position((start_p(""2 17 45))(end_p(""2 17 67)))))))(position((start_p(""2 17 41))(end_p(""2 17 68)))))))(position((start_p(""2 17 28))(end_p(""2 17 68)))))))))(position((start_p(""2 17 17))(end_p(""2 17 68)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/32-application.eval.hopix.human-readable b/flap/tests/02-Interpreter/32-application.eval.hopix.human-readable new file mode 100644 index 0000000..c8c0141 --- /dev/null +++ b/flap/tests/02-Interpreter/32-application.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let id = \x -> x +let test = print_string (id ("This test is OK.\n")) diff --git a/flap/tests/02-Interpreter/32-application.expected b/flap/tests/02-Interpreter/32-application.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/32-application.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/33-application-02.eval.hopix b/flap/tests/02-Interpreter/33-application-02.eval.hopix new file mode 100644 index 0000000..22bf528 --- /dev/null +++ b/flap/tests/02-Interpreter/33-application-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id first))(position((start_p(""1 0 4))(end_p(""1 0 9)))))()((value(Fun(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(PVariable((value(Id y))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18))))))))(position((start_p(""1 0 13))(end_p(""1 0 19)))))((value(Variable((value(Id x))(position((start_p(""1 0 23))(end_p(""1 0 24)))))()))(position((start_p(""1 0 23))(end_p(""1 0 24))))))))(position((start_p(""1 0 12))(end_p(""1 0 24)))))))))(position((start_p(""1 0 0))(end_p(""1 0 24)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 25 29))(end_p(""2 25 33)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 36 38))(end_p(""3 36 50)))))()))(position((start_p(""3 36 38))(end_p(""3 36 50)))))((value(Literal((value(LString"This test is "))(position((start_p(""3 36 66))(end_p(""3 36 67)))))))(position((start_p(""3 36 51))(end_p(""3 36 68)))))))(position((start_p(""3 36 38))(end_p(""3 36 68)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 70 72))(end_p(""4 70 84)))))()))(position((start_p(""4 70 72))(end_p(""4 70 84)))))((value(Apply((value(Variable((value(Id first))(position((start_p(""4 70 86))(end_p(""4 70 91)))))()))(position((start_p(""4 70 86))(end_p(""4 70 91)))))((value(Tuple(((value(Literal((value(LString OK))(position((start_p(""4 70 96))(end_p(""4 70 97)))))))(position((start_p(""4 70 96))(end_p(""4 70 97)))))((value(Literal((value(LString KO))(position((start_p(""4 70 102))(end_p(""4 70 103)))))))(position((start_p(""4 70 102))(end_p(""4 70 103))))))))(position((start_p(""4 70 92))(end_p(""4 70 104)))))))(position((start_p(""4 70 85))(end_p(""4 70 105)))))))(position((start_p(""4 70 72))(end_p(""4 70 105)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 107 109))(end_p(""5 107 121)))))()))(position((start_p(""5 107 109))(end_p(""5 107 121)))))((value(Literal((value(LString".\n"))(position((start_p(""5 107 127))(end_p(""5 107 128)))))))(position((start_p(""5 107 122))(end_p(""5 107 129)))))))(position((start_p(""5 107 109))(end_p(""5 107 129))))))))(position((start_p(""4 70 72))(end_p(""5 107 129))))))))(position((start_p(""3 36 38))(end_p(""5 107 129)))))))))(position((start_p(""2 25 25))(end_p(""5 107 129)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/33-application-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/33-application-02.eval.hopix.human-readable new file mode 100644 index 0000000..9380d54 --- /dev/null +++ b/flap/tests/02-Interpreter/33-application-02.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let first = \(x, y) -> x +let test = + print_string ("This test is "); + print_string (first ("OK", "KO")); + print_string (".\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/33-application-02.expected b/flap/tests/02-Interpreter/33-application-02.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/33-application-02.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/34-application-03.eval.hopix b/flap/tests/02-Interpreter/34-application-03.eval.hopix new file mode 100644 index 0000000..bbc27ac --- /dev/null +++ b/flap/tests/02-Interpreter/34-application-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id apply))(position((start_p(""1 0 4))(end_p(""1 0 9)))))()((value(Fun(FunctionDefinition((value(PTuple(((value(PVariable((value(Id f))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(PVariable((value(Id x))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18))))))))(position((start_p(""1 0 13))(end_p(""1 0 19)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""1 0 23))(end_p(""1 0 24)))))()))(position((start_p(""1 0 23))(end_p(""1 0 24)))))((value(Variable((value(Id x))(position((start_p(""1 0 26))(end_p(""1 0 27)))))()))(position((start_p(""1 0 25))(end_p(""1 0 28)))))))(position((start_p(""1 0 23))(end_p(""1 0 28))))))))(position((start_p(""1 0 12))(end_p(""1 0 28)))))))))(position((start_p(""1 0 0))(end_p(""1 0 28)))))((value(DefineValue(SimpleValue(((value(Id id))(position((start_p(""2 29 33))(end_p(""2 29 35)))))()((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""2 29 39))(end_p(""2 29 40)))))))(position((start_p(""2 29 39))(end_p(""2 29 40)))))((value(Variable((value(Id x))(position((start_p(""2 29 44))(end_p(""2 29 45)))))()))(position((start_p(""2 29 44))(end_p(""2 29 45))))))))(position((start_p(""2 29 38))(end_p(""2 29 45)))))))))(position((start_p(""2 29 29))(end_p(""2 29 45)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""3 46 50))(end_p(""3 46 54)))))()((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 46 57))(end_p(""3 46 69)))))()))(position((start_p(""3 46 57))(end_p(""3 46 69)))))((value(Apply((value(Variable((value(Id apply))(position((start_p(""3 46 71))(end_p(""3 46 76)))))()))(position((start_p(""3 46 71))(end_p(""3 46 76)))))((value(Tuple(((value(Variable((value(Id id))(position((start_p(""3 46 78))(end_p(""3 46 80)))))()))(position((start_p(""3 46 78))(end_p(""3 46 80)))))((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""3 46 101))(end_p(""3 46 102)))))))(position((start_p(""3 46 101))(end_p(""3 46 102))))))))(position((start_p(""3 46 77))(end_p(""3 46 103)))))))(position((start_p(""3 46 70))(end_p(""3 46 104)))))))(position((start_p(""3 46 57))(end_p(""3 46 104)))))))))(position((start_p(""3 46 46))(end_p(""3 46 104)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/34-application-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/34-application-03.eval.hopix.human-readable new file mode 100644 index 0000000..871ab63 --- /dev/null +++ b/flap/tests/02-Interpreter/34-application-03.eval.hopix.human-readable @@ -0,0 +1,3 @@ +let apply = \(f, x) -> f (x) +let id = \x -> x +let test = print_string (apply (id, "This test is OK.\n")) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/34-application-03.expected b/flap/tests/02-Interpreter/34-application-03.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/34-application-03.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/35-application-04.eval.hopix b/flap/tests/02-Interpreter/35-application-04.eval.hopix new file mode 100644 index 0000000..01b6b1c --- /dev/null +++ b/flap/tests/02-Interpreter/35-application-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id msg))(position((start_p(""2 11 19))(end_p(""2 11 22)))))()((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""2 11 44))(end_p(""2 11 45)))))))(position((start_p(""2 11 44))(end_p(""2 11 45)))))))((value(Define(SimpleValue(((value(Id cst))(position((start_p(""3 47 55))(end_p(""3 47 58)))))()((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""3 47 63))(end_p(""3 47 64)))))))(position((start_p(""3 47 63))(end_p(""3 47 64)))))((value(Variable((value(Id msg))(position((start_p(""3 47 68))(end_p(""3 47 71)))))()))(position((start_p(""3 47 68))(end_p(""3 47 71))))))))(position((start_p(""3 47 61))(end_p(""3 47 72)))))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 74 78))(end_p(""4 74 90)))))()))(position((start_p(""4 74 78))(end_p(""4 74 90)))))((value(Apply((value(Variable((value(Id cst))(position((start_p(""4 74 92))(end_p(""4 74 95)))))()))(position((start_p(""4 74 92))(end_p(""4 74 95)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""4 74 116))(end_p(""4 74 117)))))))(position((start_p(""4 74 96))(end_p(""4 74 118)))))))(position((start_p(""4 74 91))(end_p(""4 74 119)))))))(position((start_p(""4 74 78))(end_p(""4 74 119)))))))(position((start_p(""3 47 51))(end_p(""4 74 119)))))))(position((start_p(""2 11 15))(end_p(""4 74 119)))))))))(position((start_p(""1 0 0))(end_p(""4 74 119)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/35-application-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/35-application-04.eval.hopix.human-readable new file mode 100644 index 0000000..26e6dad --- /dev/null +++ b/flap/tests/02-Interpreter/35-application-04.eval.hopix.human-readable @@ -0,0 +1,4 @@ +let test = + let msg = "This test is OK.\n"; + let cst = (\x -> msg); + print_string (cst ("This test is KO.\n")) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/35-application-04.expected b/flap/tests/02-Interpreter/35-application-04.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/35-application-04.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/36-allocate-01.eval.hopix b/flap/tests/02-Interpreter/36-allocate-01.eval.hopix new file mode 100644 index 0000000..4e1fa6c --- /dev/null +++ b/flap/tests/02-Interpreter/36-allocate-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Ref((value(Literal((value(LInt 0))(position((start_p(""1 0 12))(end_p(""1 0 13)))))))(position((start_p(""1 0 12))(end_p(""1 0 13)))))))(position((start_p(""1 0 8))(end_p(""1 0 13)))))))))(position((start_p(""1 0 0))(end_p(""1 0 13)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 14 18))(end_p(""2 14 22)))))()((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 14 25))(end_p(""2 14 37)))))()))(position((start_p(""2 14 25))(end_p(""2 14 37)))))((value(Literal((value(LString"Allocate went well.\n"))(position((start_p(""2 14 61))(end_p(""2 14 62)))))))(position((start_p(""2 14 38))(end_p(""2 14 63)))))))(position((start_p(""2 14 25))(end_p(""2 14 63)))))))))(position((start_p(""2 14 14))(end_p(""2 14 63)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/36-allocate-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/36-allocate-01.eval.hopix.human-readable new file mode 100644 index 0000000..48329e2 --- /dev/null +++ b/flap/tests/02-Interpreter/36-allocate-01.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let r = ref 0 +let test = print_string ("Allocate went well.\n") diff --git a/flap/tests/02-Interpreter/36-allocate-01.expected b/flap/tests/02-Interpreter/36-allocate-01.expected new file mode 100644 index 0000000..6a5e374 --- /dev/null +++ b/flap/tests/02-Interpreter/36-allocate-01.expected @@ -0,0 +1 @@ +Allocate went well. diff --git a/flap/tests/02-Interpreter/37-allocate-02.eval.hopix b/flap/tests/02-Interpreter/37-allocate-02.eval.hopix new file mode 100644 index 0000000..a7e1e02 --- /dev/null +++ b/flap/tests/02-Interpreter/37-allocate-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Ref((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 8))(end_p(""1 0 32)))))))))(position((start_p(""1 0 0))(end_p(""1 0 32)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 33 37))(end_p(""2 33 41)))))()((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 33 44))(end_p(""2 33 56)))))()))(position((start_p(""2 33 44))(end_p(""2 33 56)))))((value(Read((value(Variable((value(Id r))(position((start_p(""2 33 59))(end_p(""2 33 60)))))()))(position((start_p(""2 33 59))(end_p(""2 33 60)))))))(position((start_p(""2 33 57))(end_p(""2 33 61)))))))(position((start_p(""2 33 44))(end_p(""2 33 61)))))))))(position((start_p(""2 33 33))(end_p(""2 33 61)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/37-allocate-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/37-allocate-02.eval.hopix.human-readable new file mode 100644 index 0000000..6a537bd --- /dev/null +++ b/flap/tests/02-Interpreter/37-allocate-02.eval.hopix.human-readable @@ -0,0 +1,2 @@ +let r = ref "This test is OK.\n" +let test = print_string (!r) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/37-allocate-02.expected b/flap/tests/02-Interpreter/37-allocate-02.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/37-allocate-02.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/38-allocate-03.eval.hopix b/flap/tests/02-Interpreter/38-allocate-03.eval.hopix new file mode 100644 index 0000000..9f6eaf2 --- /dev/null +++ b/flap/tests/02-Interpreter/38-allocate-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Ref((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 31))(end_p(""1 0 32)))))))(position((start_p(""1 0 8))(end_p(""1 0 32)))))))))(position((start_p(""1 0 0))(end_p(""1 0 32)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 33 37))(end_p(""2 33 41)))))()((value(Sequence(((value(Assign((value(Variable((value(Id r))(position((start_p(""3 44 48))(end_p(""3 44 49)))))()))(position((start_p(""3 44 48))(end_p(""3 44 49)))))((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""3 44 72))(end_p(""3 44 73)))))))(position((start_p(""3 44 72))(end_p(""3 44 73)))))))(position((start_p(""3 44 48))(end_p(""3 44 73)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 75 79))(end_p(""4 75 91)))))()))(position((start_p(""4 75 79))(end_p(""4 75 91)))))((value(Read((value(Variable((value(Id r))(position((start_p(""4 75 94))(end_p(""4 75 95)))))()))(position((start_p(""4 75 94))(end_p(""4 75 95)))))))(position((start_p(""4 75 92))(end_p(""4 75 96)))))))(position((start_p(""4 75 79))(end_p(""4 75 96))))))))(position((start_p(""3 44 48))(end_p(""4 75 96)))))))))(position((start_p(""2 33 33))(end_p(""4 75 96)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/38-allocate-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/38-allocate-03.eval.hopix.human-readable new file mode 100644 index 0000000..daa96a3 --- /dev/null +++ b/flap/tests/02-Interpreter/38-allocate-03.eval.hopix.human-readable @@ -0,0 +1,4 @@ +let r = ref "This test is KO.\n" +let test = + r := "This test is OK.\n"; + print_string (!r) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/38-allocate-03.expected b/flap/tests/02-Interpreter/38-allocate-03.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/38-allocate-03.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/39-allocate-04.eval.hopix b/flap/tests/02-Interpreter/39-allocate-04.eval.hopix new file mode 100644 index 0000000..66d86e2 --- /dev/null +++ b/flap/tests/02-Interpreter/39-allocate-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Ref((value(Literal((value(LString KO))(position((start_p(""1 0 15))(end_p(""1 0 16)))))))(position((start_p(""1 0 15))(end_p(""1 0 16)))))))(position((start_p(""1 0 8))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id alias))(position((start_p(""2 17 21))(end_p(""2 17 26)))))()((value(Variable((value(Id r))(position((start_p(""2 17 29))(end_p(""2 17 30)))))()))(position((start_p(""2 17 29))(end_p(""2 17 30)))))))))(position((start_p(""2 17 17))(end_p(""2 17 30)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""3 31 35))(end_p(""3 31 39)))))()((value(Sequence(((value(Assign((value(Variable((value(Id alias))(position((start_p(""4 42 46))(end_p(""4 42 51)))))()))(position((start_p(""4 42 46))(end_p(""4 42 51)))))((value(Literal((value(LString OK))(position((start_p(""4 42 58))(end_p(""4 42 59)))))))(position((start_p(""4 42 58))(end_p(""4 42 59)))))))(position((start_p(""4 42 46))(end_p(""4 42 59)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 61 65))(end_p(""5 61 77)))))()))(position((start_p(""5 61 65))(end_p(""5 61 77)))))((value(Literal((value(LString"This test is "))(position((start_p(""5 61 93))(end_p(""5 61 94)))))))(position((start_p(""5 61 78))(end_p(""5 61 95)))))))(position((start_p(""5 61 65))(end_p(""5 61 95)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 97 101))(end_p(""6 97 113)))))()))(position((start_p(""6 97 101))(end_p(""6 97 113)))))((value(Read((value(Variable((value(Id r))(position((start_p(""6 97 116))(end_p(""6 97 117)))))()))(position((start_p(""6 97 116))(end_p(""6 97 117)))))))(position((start_p(""6 97 114))(end_p(""6 97 118)))))))(position((start_p(""6 97 101))(end_p(""6 97 118)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 120 124))(end_p(""7 120 136)))))()))(position((start_p(""7 120 124))(end_p(""7 120 136)))))((value(Literal((value(LString".\n"))(position((start_p(""7 120 142))(end_p(""7 120 143)))))))(position((start_p(""7 120 137))(end_p(""7 120 144)))))))(position((start_p(""7 120 124))(end_p(""7 120 144))))))))(position((start_p(""6 97 101))(end_p(""7 120 144))))))))(position((start_p(""5 61 65))(end_p(""7 120 144))))))))(position((start_p(""4 42 46))(end_p(""7 120 144)))))))))(position((start_p(""3 31 31))(end_p(""7 120 144)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/39-allocate-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/39-allocate-04.eval.hopix.human-readable new file mode 100644 index 0000000..6453fef --- /dev/null +++ b/flap/tests/02-Interpreter/39-allocate-04.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let r = ref "KO" +let alias = r +let test = + alias := "OK"; + print_string ("This test is "); + print_string (!r); + print_string (".\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/39-allocate-04.expected b/flap/tests/02-Interpreter/39-allocate-04.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/39-allocate-04.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/40-allocate-05.eval.hopix b/flap/tests/02-Interpreter/40-allocate-05.eval.hopix new file mode 100644 index 0000000..69ba99a --- /dev/null +++ b/flap/tests/02-Interpreter/40-allocate-05.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id r1))(position((start_p(""1 0 4))(end_p(""1 0 6)))))()((value(Ref((value(Ref((value(Literal((value(LString KO))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 13))(end_p(""1 0 23)))))))(position((start_p(""1 0 9))(end_p(""1 0 23)))))))))(position((start_p(""1 0 0))(end_p(""1 0 23)))))((value(DefineValue(SimpleValue(((value(Id r2))(position((start_p(""2 24 28))(end_p(""2 24 30)))))()((value(Ref((value(Literal((value(LString KO))(position((start_p(""2 24 40))(end_p(""2 24 41)))))))(position((start_p(""2 24 40))(end_p(""2 24 41)))))))(position((start_p(""2 24 33))(end_p(""2 24 41)))))))))(position((start_p(""2 24 24))(end_p(""2 24 41)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""3 42 46))(end_p(""3 42 50)))))()((value(Sequence(((value(Assign((value(Variable((value(Id r1))(position((start_p(""4 53 57))(end_p(""4 53 59)))))()))(position((start_p(""4 53 57))(end_p(""4 53 59)))))((value(Variable((value(Id r2))(position((start_p(""4 53 63))(end_p(""4 53 65)))))()))(position((start_p(""4 53 63))(end_p(""4 53 65)))))))(position((start_p(""4 53 57))(end_p(""4 53 65)))))((value(Sequence(((value(Assign((value(Variable((value(Id r2))(position((start_p(""5 67 71))(end_p(""5 67 73)))))()))(position((start_p(""5 67 71))(end_p(""5 67 73)))))((value(Literal((value(LString OK))(position((start_p(""5 67 80))(end_p(""5 67 81)))))))(position((start_p(""5 67 80))(end_p(""5 67 81)))))))(position((start_p(""5 67 71))(end_p(""5 67 81)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 83 87))(end_p(""6 83 99)))))()))(position((start_p(""6 83 87))(end_p(""6 83 99)))))((value(Literal((value(LString"This test is "))(position((start_p(""6 83 115))(end_p(""6 83 116)))))))(position((start_p(""6 83 100))(end_p(""6 83 117)))))))(position((start_p(""6 83 87))(end_p(""6 83 117)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 119 123))(end_p(""7 119 135)))))()))(position((start_p(""7 119 123))(end_p(""7 119 135)))))((value(Read((value(Read((value(Variable((value(Id r1))(position((start_p(""7 119 139))(end_p(""7 119 141)))))()))(position((start_p(""7 119 139))(end_p(""7 119 141)))))))(position((start_p(""7 119 138))(end_p(""7 119 141)))))))(position((start_p(""7 119 136))(end_p(""7 119 142)))))))(position((start_p(""7 119 123))(end_p(""7 119 142)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 144 148))(end_p(""8 144 160)))))()))(position((start_p(""8 144 148))(end_p(""8 144 160)))))((value(Literal((value(LString".\n"))(position((start_p(""8 144 166))(end_p(""8 144 167)))))))(position((start_p(""8 144 161))(end_p(""8 144 168)))))))(position((start_p(""8 144 148))(end_p(""8 144 168))))))))(position((start_p(""7 119 123))(end_p(""8 144 168))))))))(position((start_p(""6 83 87))(end_p(""8 144 168))))))))(position((start_p(""5 67 71))(end_p(""8 144 168))))))))(position((start_p(""4 53 57))(end_p(""8 144 168)))))))))(position((start_p(""3 42 42))(end_p(""8 144 168)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/40-allocate-05.eval.hopix.human-readable b/flap/tests/02-Interpreter/40-allocate-05.eval.hopix.human-readable new file mode 100644 index 0000000..a38221e --- /dev/null +++ b/flap/tests/02-Interpreter/40-allocate-05.eval.hopix.human-readable @@ -0,0 +1,8 @@ +let r1 = ref (ref "KO") +let r2 = ref "KO" +let test = + r1 := r2; + r2 := "OK"; + print_string ("This test is "); + print_string (!!r1); + print_string (".\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/40-allocate-05.expected b/flap/tests/02-Interpreter/40-allocate-05.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/40-allocate-05.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/41-allocate-06.eval.hopix b/flap/tests/02-Interpreter/41-allocate-06.eval.hopix new file mode 100644 index 0000000..2db7e12 --- /dev/null +++ b/flap/tests/02-Interpreter/41-allocate-06.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id f))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()((value(Ref((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Variable((value(Id x))(position((start_p(""1 0 19))(end_p(""1 0 20)))))()))(position((start_p(""1 0 19))(end_p(""1 0 20))))))))(position((start_p(""1 0 12))(end_p(""1 0 21)))))))(position((start_p(""1 0 8))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""2 22 26))(end_p(""2 22 30)))))()((value(Sequence(((value(Assign((value(Variable((value(Id f))(position((start_p(""3 33 37))(end_p(""3 33 38)))))()))(position((start_p(""3 33 37))(end_p(""3 33 38)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""3 33 44))(end_p(""3 33 45)))))))(position((start_p(""3 33 44))(end_p(""3 33 45)))))((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""3 33 68))(end_p(""3 33 69)))))))(position((start_p(""3 33 68))(end_p(""3 33 69))))))))(position((start_p(""3 33 42))(end_p(""3 33 70)))))))(position((start_p(""3 33 37))(end_p(""3 33 70)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 72 76))(end_p(""4 72 88)))))()))(position((start_p(""4 72 76))(end_p(""4 72 88)))))((value(Apply((value(Read((value(Variable((value(Id f))(position((start_p(""4 72 91))(end_p(""4 72 92)))))()))(position((start_p(""4 72 91))(end_p(""4 72 92)))))))(position((start_p(""4 72 90))(end_p(""4 72 92)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""4 72 113))(end_p(""4 72 114)))))))(position((start_p(""4 72 93))(end_p(""4 72 115)))))))(position((start_p(""4 72 89))(end_p(""4 72 116)))))))(position((start_p(""4 72 76))(end_p(""4 72 116))))))))(position((start_p(""3 33 37))(end_p(""4 72 116)))))))))(position((start_p(""2 22 22))(end_p(""4 72 116)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/41-allocate-06.eval.hopix.human-readable b/flap/tests/02-Interpreter/41-allocate-06.eval.hopix.human-readable new file mode 100644 index 0000000..fd4f242 --- /dev/null +++ b/flap/tests/02-Interpreter/41-allocate-06.eval.hopix.human-readable @@ -0,0 +1,4 @@ +let f = ref (\x -> x) +let test = + f := (\x -> "This test is OK.\n"); + print_string (!f ("This test is KO.\n")) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/41-allocate-06.expected b/flap/tests/02-Interpreter/41-allocate-06.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/41-allocate-06.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/42-match-01.eval.hopix b/flap/tests/02-Interpreter/42-match-01.eval.hopix new file mode 100644 index 0000000..d3e1a63 --- /dev/null +++ b/flap/tests/02-Interpreter/42-match-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Here))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()()))(position((start_p(""2 11 22))(end_p(""2 11 26)))))(((value(Branch((value(PTaggedValue((value(KId Here))(position((start_p(""3 30 36))(end_p(""3 30 40)))))()()))(position((start_p(""3 30 36))(end_p(""3 30 40)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 30 47))(end_p(""3 30 59)))))()))(position((start_p(""3 30 47))(end_p(""3 30 59)))))((value(Literal((value(LString"This test is OK.\n"))(position((start_p(""3 30 80))(end_p(""3 30 81)))))))(position((start_p(""3 30 60))(end_p(""3 30 82)))))))(position((start_p(""3 30 47))(end_p(""3 30 82)))))))(position((start_p(""3 30 36))(end_p(""3 30 82)))))((value(Branch((value(PTaggedValue((value(KId NotHere))(position((start_p(""4 83 89))(end_p(""4 83 96)))))()()))(position((start_p(""4 83 89))(end_p(""4 83 96)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 83 100))(end_p(""4 83 112)))))()))(position((start_p(""4 83 100))(end_p(""4 83 112)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""4 83 133))(end_p(""4 83 134)))))))(position((start_p(""4 83 113))(end_p(""4 83 135)))))))(position((start_p(""4 83 100))(end_p(""4 83 135)))))))(position((start_p(""4 83 89))(end_p(""4 83 135))))))))(position((start_p(""2 11 15))(end_p(""5 136 141)))))))))(position((start_p(""1 0 0))(end_p(""5 136 141)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/42-match-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/42-match-01.eval.hopix.human-readable new file mode 100644 index 0000000..01fdfd2 --- /dev/null +++ b/flap/tests/02-Interpreter/42-match-01.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let test = + match (Here) { + | Here -> print_string ("This test is OK.\n") + | NotHere -> print_string ("This test is KO.\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/42-match-01.expected b/flap/tests/02-Interpreter/42-match-01.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/42-match-01.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/43-match-02.eval.hopix b/flap/tests/02-Interpreter/43-match-02.eval.hopix new file mode 100644 index 0000000..87b0ab1 --- /dev/null +++ b/flap/tests/02-Interpreter/43-match-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Here))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Literal((value(LString OK))(position((start_p(""2 11 31))(end_p(""2 11 32)))))))(position((start_p(""2 11 31))(end_p(""2 11 32))))))))(position((start_p(""2 11 22))(end_p(""2 11 33)))))(((value(Branch((value(PTaggedValue((value(KId Here))(position((start_p(""3 37 43))(end_p(""3 37 47)))))()(((value(PVariable((value(Id x))(position((start_p(""3 37 49))(end_p(""3 37 50)))))))(position((start_p(""3 37 49))(end_p(""3 37 50))))))))(position((start_p(""3 37 43))(end_p(""3 37 51)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 37 55))(end_p(""3 37 67)))))()))(position((start_p(""3 37 55))(end_p(""3 37 67)))))((value(Literal((value(LString"This test is "))(position((start_p(""3 37 83))(end_p(""3 37 84)))))))(position((start_p(""3 37 68))(end_p(""3 37 85)))))))(position((start_p(""3 37 55))(end_p(""3 37 85)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 37 87))(end_p(""3 37 99)))))()))(position((start_p(""3 37 87))(end_p(""3 37 99)))))((value(Variable((value(Id x))(position((start_p(""3 37 101))(end_p(""3 37 102)))))()))(position((start_p(""3 37 100))(end_p(""3 37 103)))))))(position((start_p(""3 37 87))(end_p(""3 37 103)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 37 105))(end_p(""3 37 117)))))()))(position((start_p(""3 37 105))(end_p(""3 37 117)))))((value(Literal((value(LString".\n"))(position((start_p(""3 37 123))(end_p(""3 37 124)))))))(position((start_p(""3 37 118))(end_p(""3 37 125)))))))(position((start_p(""3 37 105))(end_p(""3 37 125))))))))(position((start_p(""3 37 87))(end_p(""3 37 125))))))))(position((start_p(""3 37 55))(end_p(""3 37 125)))))))(position((start_p(""3 37 43))(end_p(""3 37 125)))))((value(Branch((value(PTaggedValue((value(KId NotHere))(position((start_p(""4 126 132))(end_p(""4 126 139)))))()()))(position((start_p(""4 126 132))(end_p(""4 126 139)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 126 144))(end_p(""4 126 156)))))()))(position((start_p(""4 126 144))(end_p(""4 126 156)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""4 126 177))(end_p(""4 126 178)))))))(position((start_p(""4 126 157))(end_p(""4 126 179)))))))(position((start_p(""4 126 144))(end_p(""4 126 179)))))))(position((start_p(""4 126 132))(end_p(""4 126 179))))))))(position((start_p(""2 11 15))(end_p(""5 180 185)))))))))(position((start_p(""1 0 0))(end_p(""5 180 185)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/43-match-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/43-match-02.eval.hopix.human-readable new file mode 100644 index 0000000..bae6f2b --- /dev/null +++ b/flap/tests/02-Interpreter/43-match-02.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let test = + match (Here ("OK")) { + | Here (x) -> print_string ("This test is "); print_string (x); print_string (".\n") + | NotHere -> print_string ("This test is KO.\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/43-match-02.expected b/flap/tests/02-Interpreter/43-match-02.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/43-match-02.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/44-match-03.eval.hopix b/flap/tests/02-Interpreter/44-match-03.eval.hopix new file mode 100644 index 0000000..cdecfeb --- /dev/null +++ b/flap/tests/02-Interpreter/44-match-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Here))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Literal((value(LString O))(position((start_p(""2 11 30))(end_p(""2 11 31)))))))(position((start_p(""2 11 30))(end_p(""2 11 31)))))((value(Literal((value(LString K))(position((start_p(""2 11 35))(end_p(""2 11 36)))))))(position((start_p(""2 11 35))(end_p(""2 11 36))))))))(position((start_p(""2 11 22))(end_p(""2 11 37)))))(((value(Branch((value(PTaggedValue((value(KId Here))(position((start_p(""3 41 47))(end_p(""3 41 51)))))()(((value(PVariable((value(Id x))(position((start_p(""3 41 53))(end_p(""3 41 54)))))))(position((start_p(""3 41 53))(end_p(""3 41 54)))))((value(PVariable((value(Id y))(position((start_p(""3 41 56))(end_p(""3 41 57)))))))(position((start_p(""3 41 56))(end_p(""3 41 57))))))))(position((start_p(""3 41 47))(end_p(""3 41 58)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 62 68))(end_p(""4 62 80)))))()))(position((start_p(""4 62 68))(end_p(""4 62 80)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 62 96))(end_p(""4 62 97)))))))(position((start_p(""4 62 81))(end_p(""4 62 98)))))))(position((start_p(""4 62 68))(end_p(""4 62 98)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 100 106))(end_p(""5 100 118)))))()))(position((start_p(""5 100 106))(end_p(""5 100 118)))))((value(Variable((value(Id x))(position((start_p(""5 100 120))(end_p(""5 100 121)))))()))(position((start_p(""5 100 119))(end_p(""5 100 122)))))))(position((start_p(""5 100 106))(end_p(""5 100 122)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 124 130))(end_p(""6 124 142)))))()))(position((start_p(""6 124 130))(end_p(""6 124 142)))))((value(Variable((value(Id y))(position((start_p(""6 124 144))(end_p(""6 124 145)))))()))(position((start_p(""6 124 143))(end_p(""6 124 146)))))))(position((start_p(""6 124 130))(end_p(""6 124 146)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 148 154))(end_p(""7 148 166)))))()))(position((start_p(""7 148 154))(end_p(""7 148 166)))))((value(Literal((value(LString".\n"))(position((start_p(""7 148 172))(end_p(""7 148 173)))))))(position((start_p(""7 148 167))(end_p(""7 148 174)))))))(position((start_p(""7 148 154))(end_p(""7 148 174))))))))(position((start_p(""6 124 130))(end_p(""7 148 174))))))))(position((start_p(""5 100 106))(end_p(""7 148 174))))))))(position((start_p(""4 62 68))(end_p(""7 148 174)))))))(position((start_p(""3 41 47))(end_p(""7 148 174)))))((value(Branch((value(PTaggedValue((value(KId NotHere))(position((start_p(""8 175 181))(end_p(""8 175 188)))))()()))(position((start_p(""8 175 181))(end_p(""8 175 188)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 175 193))(end_p(""8 175 205)))))()))(position((start_p(""8 175 193))(end_p(""8 175 205)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""8 175 226))(end_p(""8 175 227)))))))(position((start_p(""8 175 206))(end_p(""8 175 228)))))))(position((start_p(""8 175 193))(end_p(""8 175 228)))))))(position((start_p(""8 175 181))(end_p(""8 175 228))))))))(position((start_p(""2 11 15))(end_p(""9 229 234)))))))))(position((start_p(""1 0 0))(end_p(""9 229 234)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/44-match-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/44-match-03.eval.hopix.human-readable new file mode 100644 index 0000000..3d0f59d --- /dev/null +++ b/flap/tests/02-Interpreter/44-match-03.eval.hopix.human-readable @@ -0,0 +1,9 @@ +let test = + match (Here ("O", "K")) { + | Here (x, y) -> + print_string ("This test is "); + print_string (x); + print_string (y); + print_string (".\n") + | NotHere -> print_string ("This test is KO.\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/44-match-03.expected b/flap/tests/02-Interpreter/44-match-03.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/44-match-03.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/45-match-04.eval.hopix b/flap/tests/02-Interpreter/45-match-04.eval.hopix new file mode 100644 index 0000000..afb2502 --- /dev/null +++ b/flap/tests/02-Interpreter/45-match-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Here))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Literal((value(LString O))(position((start_p(""2 11 30))(end_p(""2 11 31)))))))(position((start_p(""2 11 30))(end_p(""2 11 31)))))((value(Literal((value(LString K))(position((start_p(""2 11 35))(end_p(""2 11 36)))))))(position((start_p(""2 11 35))(end_p(""2 11 36)))))((value(Literal((value(LString".\n"))(position((start_p(""2 11 42))(end_p(""2 11 43)))))))(position((start_p(""2 11 42))(end_p(""2 11 43))))))))(position((start_p(""2 11 22))(end_p(""2 11 44)))))(((value(Branch((value(PTaggedValue((value(KId Here))(position((start_p(""3 48 54))(end_p(""3 48 58)))))()(((value(PVariable((value(Id x))(position((start_p(""3 48 60))(end_p(""3 48 61)))))))(position((start_p(""3 48 60))(end_p(""3 48 61)))))((value(PVariable((value(Id y))(position((start_p(""3 48 63))(end_p(""3 48 64)))))))(position((start_p(""3 48 63))(end_p(""3 48 64)))))((value(PVariable((value(Id z))(position((start_p(""3 48 66))(end_p(""3 48 67)))))))(position((start_p(""3 48 66))(end_p(""3 48 67))))))))(position((start_p(""3 48 54))(end_p(""3 48 68)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 72 78))(end_p(""4 72 90)))))()))(position((start_p(""4 72 78))(end_p(""4 72 90)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 72 106))(end_p(""4 72 107)))))))(position((start_p(""4 72 91))(end_p(""4 72 108)))))))(position((start_p(""4 72 78))(end_p(""4 72 108)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 110 116))(end_p(""5 110 128)))))()))(position((start_p(""5 110 116))(end_p(""5 110 128)))))((value(Variable((value(Id x))(position((start_p(""5 110 130))(end_p(""5 110 131)))))()))(position((start_p(""5 110 129))(end_p(""5 110 132)))))))(position((start_p(""5 110 116))(end_p(""5 110 132)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 134 140))(end_p(""6 134 152)))))()))(position((start_p(""6 134 140))(end_p(""6 134 152)))))((value(Variable((value(Id y))(position((start_p(""6 134 154))(end_p(""6 134 155)))))()))(position((start_p(""6 134 153))(end_p(""6 134 156)))))))(position((start_p(""6 134 140))(end_p(""6 134 156)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 158 164))(end_p(""7 158 176)))))()))(position((start_p(""7 158 164))(end_p(""7 158 176)))))((value(Variable((value(Id z))(position((start_p(""7 158 178))(end_p(""7 158 179)))))()))(position((start_p(""7 158 177))(end_p(""7 158 180)))))))(position((start_p(""7 158 164))(end_p(""7 158 180))))))))(position((start_p(""6 134 140))(end_p(""7 158 180))))))))(position((start_p(""5 110 116))(end_p(""7 158 180))))))))(position((start_p(""4 72 78))(end_p(""7 158 180)))))))(position((start_p(""3 48 54))(end_p(""7 158 180)))))((value(Branch((value(PTaggedValue((value(KId NotHere))(position((start_p(""8 181 187))(end_p(""8 181 194)))))()()))(position((start_p(""8 181 187))(end_p(""8 181 194)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 181 198))(end_p(""8 181 210)))))()))(position((start_p(""8 181 198))(end_p(""8 181 210)))))((value(Literal((value(LString"This test is KO.\n"))(position((start_p(""8 181 231))(end_p(""8 181 232)))))))(position((start_p(""8 181 211))(end_p(""8 181 233)))))))(position((start_p(""8 181 198))(end_p(""8 181 233)))))))(position((start_p(""8 181 187))(end_p(""8 181 233))))))))(position((start_p(""2 11 15))(end_p(""9 234 239)))))))))(position((start_p(""1 0 0))(end_p(""9 234 239)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/45-match-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/45-match-04.eval.hopix.human-readable new file mode 100644 index 0000000..e3a7f00 --- /dev/null +++ b/flap/tests/02-Interpreter/45-match-04.eval.hopix.human-readable @@ -0,0 +1,9 @@ +let test = + match (Here ("O", "K", ".\n")) { + | Here (x, y, z) -> + print_string ("This test is "); + print_string (x); + print_string (y); + print_string (z) + | NotHere -> print_string ("This test is KO.\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/45-match-04.expected b/flap/tests/02-Interpreter/45-match-04.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/45-match-04.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/46-match-05.eval.hopix b/flap/tests/02-Interpreter/46-match-05.eval.hopix new file mode 100644 index 0000000..869bada --- /dev/null +++ b/flap/tests/02-Interpreter/46-match-05.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Deep))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 28))(end_p(""2 11 32)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 34))(end_p(""2 11 38)))))()(((value(Tagged((value(KId Inside))(position((start_p(""2 11 40))(end_p(""2 11 46)))))()(((value(Literal((value(LString OK))(position((start_p(""2 11 51))(end_p(""2 11 52)))))))(position((start_p(""2 11 51))(end_p(""2 11 52))))))))(position((start_p(""2 11 40))(end_p(""2 11 53))))))))(position((start_p(""2 11 34))(end_p(""2 11 54))))))))(position((start_p(""2 11 28))(end_p(""2 11 55))))))))(position((start_p(""2 11 22))(end_p(""2 11 56)))))(((value(Branch((value(PTaggedValue((value(KId Deep))(position((start_p(""3 60 66))(end_p(""3 60 70)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 60 72))(end_p(""3 60 76)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 60 78))(end_p(""3 60 82)))))()(((value(PTaggedValue((value(KId Inside))(position((start_p(""3 60 84))(end_p(""3 60 90)))))()(((value(PVariable((value(Id you_find_me))(position((start_p(""3 60 92))(end_p(""3 60 103)))))))(position((start_p(""3 60 92))(end_p(""3 60 103))))))))(position((start_p(""3 60 84))(end_p(""3 60 104))))))))(position((start_p(""3 60 78))(end_p(""3 60 105))))))))(position((start_p(""3 60 72))(end_p(""3 60 106))))))))(position((start_p(""3 60 66))(end_p(""3 60 107)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 111 117))(end_p(""4 111 129)))))()))(position((start_p(""4 111 117))(end_p(""4 111 129)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 111 145))(end_p(""4 111 146)))))))(position((start_p(""4 111 130))(end_p(""4 111 147)))))))(position((start_p(""4 111 117))(end_p(""4 111 147)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 149 155))(end_p(""5 149 167)))))()))(position((start_p(""5 149 155))(end_p(""5 149 167)))))((value(Variable((value(Id you_find_me))(position((start_p(""5 149 169))(end_p(""5 149 180)))))()))(position((start_p(""5 149 168))(end_p(""5 149 181)))))))(position((start_p(""5 149 155))(end_p(""5 149 181)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 183 189))(end_p(""6 183 201)))))()))(position((start_p(""6 183 189))(end_p(""6 183 201)))))((value(Literal((value(LString".\n"))(position((start_p(""6 183 207))(end_p(""6 183 208)))))))(position((start_p(""6 183 202))(end_p(""6 183 209)))))))(position((start_p(""6 183 189))(end_p(""6 183 209))))))))(position((start_p(""5 149 155))(end_p(""6 183 209))))))))(position((start_p(""4 111 117))(end_p(""6 183 209)))))))(position((start_p(""3 60 66))(end_p(""6 183 209))))))))(position((start_p(""2 11 15))(end_p(""7 210 215)))))))))(position((start_p(""1 0 0))(end_p(""7 210 215)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/46-match-05.eval.hopix.human-readable b/flap/tests/02-Interpreter/46-match-05.eval.hopix.human-readable new file mode 100644 index 0000000..57deaed --- /dev/null +++ b/flap/tests/02-Interpreter/46-match-05.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + match (Deep (Deep (Deep (Inside ("OK"))))) { + | Deep (Deep (Deep (Inside (you_find_me)))) -> + print_string ("This test is "); + print_string (you_find_me); + print_string (".\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/46-match-05.expected b/flap/tests/02-Interpreter/46-match-05.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/46-match-05.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/47-match-06.eval.hopix b/flap/tests/02-Interpreter/47-match-06.eval.hopix new file mode 100644 index 0000000..fdba25d --- /dev/null +++ b/flap/tests/02-Interpreter/47-match-06.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Deep))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 28))(end_p(""2 11 32)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 34))(end_p(""2 11 38)))))()(((value(Tagged((value(KId Inside))(position((start_p(""2 11 40))(end_p(""2 11 46)))))()(((value(Literal((value(LString KO))(position((start_p(""2 11 51))(end_p(""2 11 52)))))))(position((start_p(""2 11 51))(end_p(""2 11 52)))))((value(Literal((value(LString KO))(position((start_p(""2 11 57))(end_p(""2 11 58)))))))(position((start_p(""2 11 57))(end_p(""2 11 58)))))((value(Literal((value(LString OK))(position((start_p(""2 11 63))(end_p(""2 11 64)))))))(position((start_p(""2 11 63))(end_p(""2 11 64))))))))(position((start_p(""2 11 40))(end_p(""2 11 65))))))))(position((start_p(""2 11 34))(end_p(""2 11 66))))))))(position((start_p(""2 11 28))(end_p(""2 11 67))))))))(position((start_p(""2 11 22))(end_p(""2 11 68)))))(((value(Branch((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 78))(end_p(""3 72 82)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 84))(end_p(""3 72 88)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 90))(end_p(""3 72 94)))))()(((value(PTaggedValue((value(KId Inside))(position((start_p(""3 72 96))(end_p(""3 72 102)))))()(((value(PVariable((value(Id not_here))(position((start_p(""3 72 104))(end_p(""3 72 112)))))))(position((start_p(""3 72 104))(end_p(""3 72 112)))))((value(PVariable((value(Id neither_here))(position((start_p(""3 72 114))(end_p(""3 72 126)))))))(position((start_p(""3 72 114))(end_p(""3 72 126)))))((value(PVariable((value(Id you_found_me))(position((start_p(""3 72 128))(end_p(""3 72 140)))))))(position((start_p(""3 72 128))(end_p(""3 72 140))))))))(position((start_p(""3 72 96))(end_p(""3 72 141))))))))(position((start_p(""3 72 90))(end_p(""3 72 142))))))))(position((start_p(""3 72 84))(end_p(""3 72 143))))))))(position((start_p(""3 72 78))(end_p(""3 72 144)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 148 154))(end_p(""4 148 166)))))()))(position((start_p(""4 148 154))(end_p(""4 148 166)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 148 182))(end_p(""4 148 183)))))))(position((start_p(""4 148 167))(end_p(""4 148 184)))))))(position((start_p(""4 148 154))(end_p(""4 148 184)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 186 192))(end_p(""5 186 204)))))()))(position((start_p(""5 186 192))(end_p(""5 186 204)))))((value(Variable((value(Id you_found_me))(position((start_p(""5 186 206))(end_p(""5 186 218)))))()))(position((start_p(""5 186 205))(end_p(""5 186 219)))))))(position((start_p(""5 186 192))(end_p(""5 186 219)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 221 227))(end_p(""6 221 239)))))()))(position((start_p(""6 221 227))(end_p(""6 221 239)))))((value(Literal((value(LString".\n"))(position((start_p(""6 221 245))(end_p(""6 221 246)))))))(position((start_p(""6 221 240))(end_p(""6 221 247)))))))(position((start_p(""6 221 227))(end_p(""6 221 247))))))))(position((start_p(""5 186 192))(end_p(""6 221 247))))))))(position((start_p(""4 148 154))(end_p(""6 221 247)))))))(position((start_p(""3 72 78))(end_p(""6 221 247))))))))(position((start_p(""2 11 15))(end_p(""7 248 253)))))))))(position((start_p(""1 0 0))(end_p(""7 248 253)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/47-match-06.eval.hopix.human-readable b/flap/tests/02-Interpreter/47-match-06.eval.hopix.human-readable new file mode 100644 index 0000000..f33d9ab --- /dev/null +++ b/flap/tests/02-Interpreter/47-match-06.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + match (Deep (Deep (Deep (Inside ("KO", "KO", "OK"))))) { + | Deep (Deep (Deep (Inside (not_here, neither_here, you_found_me)))) -> + print_string ("This test is "); + print_string (you_found_me); + print_string (".\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/47-match-06.expected b/flap/tests/02-Interpreter/47-match-06.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/47-match-06.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/48-match-07.eval.hopix b/flap/tests/02-Interpreter/48-match-07.eval.hopix new file mode 100644 index 0000000..f78cb47 --- /dev/null +++ b/flap/tests/02-Interpreter/48-match-07.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Deep))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 28))(end_p(""2 11 32)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 34))(end_p(""2 11 38)))))()(((value(Tagged((value(KId Inside))(position((start_p(""2 11 40))(end_p(""2 11 46)))))()(((value(Literal((value(LString KO))(position((start_p(""2 11 51))(end_p(""2 11 52)))))))(position((start_p(""2 11 51))(end_p(""2 11 52)))))((value(Literal((value(LString KO))(position((start_p(""2 11 57))(end_p(""2 11 58)))))))(position((start_p(""2 11 57))(end_p(""2 11 58)))))((value(Literal((value(LString OK))(position((start_p(""2 11 63))(end_p(""2 11 64)))))))(position((start_p(""2 11 63))(end_p(""2 11 64))))))))(position((start_p(""2 11 40))(end_p(""2 11 65))))))))(position((start_p(""2 11 34))(end_p(""2 11 66))))))))(position((start_p(""2 11 28))(end_p(""2 11 67))))))))(position((start_p(""2 11 22))(end_p(""2 11 68)))))(((value(Branch((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 78))(end_p(""3 72 82)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 84))(end_p(""3 72 88)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 90))(end_p(""3 72 94)))))()(((value(POr(((value(PTaggedValue((value(KId NotHere))(position((start_p(""3 72 96))(end_p(""3 72 103)))))()()))(position((start_p(""3 72 96))(end_p(""3 72 103)))))((value(PTaggedValue((value(KId Inside))(position((start_p(""3 72 106))(end_p(""3 72 112)))))()(((value(PVariable((value(Id not_here))(position((start_p(""3 72 114))(end_p(""3 72 122)))))))(position((start_p(""3 72 114))(end_p(""3 72 122)))))((value(PVariable((value(Id neither_here))(position((start_p(""3 72 124))(end_p(""3 72 136)))))))(position((start_p(""3 72 124))(end_p(""3 72 136)))))((value(PVariable((value(Id you_found_me))(position((start_p(""3 72 138))(end_p(""3 72 150)))))))(position((start_p(""3 72 138))(end_p(""3 72 150))))))))(position((start_p(""3 72 106))(end_p(""3 72 151))))))))(position((start_p(""3 72 96))(end_p(""3 72 151))))))))(position((start_p(""3 72 90))(end_p(""3 72 152))))))))(position((start_p(""3 72 84))(end_p(""3 72 153))))))))(position((start_p(""3 72 78))(end_p(""3 72 154)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 158 164))(end_p(""4 158 176)))))()))(position((start_p(""4 158 164))(end_p(""4 158 176)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 158 192))(end_p(""4 158 193)))))))(position((start_p(""4 158 177))(end_p(""4 158 194)))))))(position((start_p(""4 158 164))(end_p(""4 158 194)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 196 202))(end_p(""5 196 214)))))()))(position((start_p(""5 196 202))(end_p(""5 196 214)))))((value(Variable((value(Id you_found_me))(position((start_p(""5 196 216))(end_p(""5 196 228)))))()))(position((start_p(""5 196 215))(end_p(""5 196 229)))))))(position((start_p(""5 196 202))(end_p(""5 196 229)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 231 237))(end_p(""6 231 249)))))()))(position((start_p(""6 231 237))(end_p(""6 231 249)))))((value(Literal((value(LString".\n"))(position((start_p(""6 231 255))(end_p(""6 231 256)))))))(position((start_p(""6 231 250))(end_p(""6 231 257)))))))(position((start_p(""6 231 237))(end_p(""6 231 257))))))))(position((start_p(""5 196 202))(end_p(""6 231 257))))))))(position((start_p(""4 158 164))(end_p(""6 231 257)))))))(position((start_p(""3 72 78))(end_p(""6 231 257))))))))(position((start_p(""2 11 15))(end_p(""7 258 263)))))))))(position((start_p(""1 0 0))(end_p(""7 258 263)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/48-match-07.eval.hopix.human-readable b/flap/tests/02-Interpreter/48-match-07.eval.hopix.human-readable new file mode 100644 index 0000000..d388570 --- /dev/null +++ b/flap/tests/02-Interpreter/48-match-07.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + match (Deep (Deep (Deep (Inside ("KO", "KO", "OK"))))) { + | Deep (Deep (Deep (NotHere | Inside (not_here, neither_here, you_found_me)))) -> + print_string ("This test is "); + print_string (you_found_me); + print_string (".\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/48-match-07.expected b/flap/tests/02-Interpreter/48-match-07.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/48-match-07.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/49-match-08.eval.hopix b/flap/tests/02-Interpreter/49-match-08.eval.hopix new file mode 100644 index 0000000..126ac06 --- /dev/null +++ b/flap/tests/02-Interpreter/49-match-08.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId Deep))(position((start_p(""2 11 22))(end_p(""2 11 26)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 28))(end_p(""2 11 32)))))()(((value(Tagged((value(KId Deep))(position((start_p(""2 11 34))(end_p(""2 11 38)))))()(((value(Tagged((value(KId Inside))(position((start_p(""2 11 40))(end_p(""2 11 46)))))()(((value(Literal((value(LString KO))(position((start_p(""2 11 51))(end_p(""2 11 52)))))))(position((start_p(""2 11 51))(end_p(""2 11 52)))))((value(Literal((value(LString KO))(position((start_p(""2 11 57))(end_p(""2 11 58)))))))(position((start_p(""2 11 57))(end_p(""2 11 58)))))((value(Literal((value(LString OK))(position((start_p(""2 11 63))(end_p(""2 11 64)))))))(position((start_p(""2 11 63))(end_p(""2 11 64))))))))(position((start_p(""2 11 40))(end_p(""2 11 65))))))))(position((start_p(""2 11 34))(end_p(""2 11 66))))))))(position((start_p(""2 11 28))(end_p(""2 11 67))))))))(position((start_p(""2 11 22))(end_p(""2 11 68)))))(((value(Branch((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 78))(end_p(""3 72 82)))))()(((value(POr(((value(PTaggedValue((value(KId NotHere))(position((start_p(""3 72 84))(end_p(""3 72 91)))))()()))(position((start_p(""3 72 84))(end_p(""3 72 91)))))((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 94))(end_p(""3 72 98)))))()(((value(PTaggedValue((value(KId Deep))(position((start_p(""3 72 100))(end_p(""3 72 104)))))()(((value(POr(((value(PTaggedValue((value(KId NotHere))(position((start_p(""3 72 106))(end_p(""3 72 113)))))()()))(position((start_p(""3 72 106))(end_p(""3 72 113)))))((value(PTaggedValue((value(KId Inside))(position((start_p(""3 72 116))(end_p(""3 72 122)))))()(((value(PVariable((value(Id not_here))(position((start_p(""3 72 124))(end_p(""3 72 132)))))))(position((start_p(""3 72 124))(end_p(""3 72 132)))))((value(PVariable((value(Id neither_here))(position((start_p(""3 72 134))(end_p(""3 72 146)))))))(position((start_p(""3 72 134))(end_p(""3 72 146)))))((value(PVariable((value(Id you_found_me))(position((start_p(""3 72 148))(end_p(""3 72 160)))))))(position((start_p(""3 72 148))(end_p(""3 72 160))))))))(position((start_p(""3 72 116))(end_p(""3 72 161))))))))(position((start_p(""3 72 106))(end_p(""3 72 161))))))))(position((start_p(""3 72 100))(end_p(""3 72 162))))))))(position((start_p(""3 72 94))(end_p(""3 72 163))))))))(position((start_p(""3 72 84))(end_p(""3 72 163))))))))(position((start_p(""3 72 78))(end_p(""3 72 164)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 168 174))(end_p(""4 168 186)))))()))(position((start_p(""4 168 174))(end_p(""4 168 186)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 168 202))(end_p(""4 168 203)))))))(position((start_p(""4 168 187))(end_p(""4 168 204)))))))(position((start_p(""4 168 174))(end_p(""4 168 204)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 206 212))(end_p(""5 206 224)))))()))(position((start_p(""5 206 212))(end_p(""5 206 224)))))((value(Variable((value(Id you_found_me))(position((start_p(""5 206 226))(end_p(""5 206 238)))))()))(position((start_p(""5 206 225))(end_p(""5 206 239)))))))(position((start_p(""5 206 212))(end_p(""5 206 239)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 241 247))(end_p(""6 241 259)))))()))(position((start_p(""6 241 247))(end_p(""6 241 259)))))((value(Literal((value(LString".\n"))(position((start_p(""6 241 265))(end_p(""6 241 266)))))))(position((start_p(""6 241 260))(end_p(""6 241 267)))))))(position((start_p(""6 241 247))(end_p(""6 241 267))))))))(position((start_p(""5 206 212))(end_p(""6 241 267))))))))(position((start_p(""4 168 174))(end_p(""6 241 267)))))))(position((start_p(""3 72 78))(end_p(""6 241 267))))))))(position((start_p(""2 11 15))(end_p(""7 268 273)))))))))(position((start_p(""1 0 0))(end_p(""7 268 273)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/49-match-08.eval.hopix.human-readable b/flap/tests/02-Interpreter/49-match-08.eval.hopix.human-readable new file mode 100644 index 0000000..9a61301 --- /dev/null +++ b/flap/tests/02-Interpreter/49-match-08.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + match (Deep (Deep (Deep (Inside ("KO", "KO", "OK"))))) { + | Deep (NotHere | Deep (Deep (NotHere | Inside (not_here, neither_here, you_found_me)))) -> + print_string ("This test is "); + print_string (you_found_me); + print_string (".\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/49-match-08.expected b/flap/tests/02-Interpreter/49-match-08.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/49-match-08.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/50-match-09.eval.hopix b/flap/tests/02-Interpreter/50-match-09.eval.hopix new file mode 100644 index 0000000..15163b1 --- /dev/null +++ b/flap/tests/02-Interpreter/50-match-09.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId K))(position((start_p(""2 11 22))(end_p(""2 11 23)))))()(((value(Literal((value(LString OK))(position((start_p(""2 11 28))(end_p(""2 11 29)))))))(position((start_p(""2 11 28))(end_p(""2 11 29))))))))(position((start_p(""2 11 22))(end_p(""2 11 30)))))(((value(Branch((value(PTaggedValue((value(KId K))(position((start_p(""3 34 40))(end_p(""3 34 41)))))()(((value(PAnd(((value(PVariable((value(Id x))(position((start_p(""3 34 43))(end_p(""3 34 44)))))))(position((start_p(""3 34 43))(end_p(""3 34 44)))))((value(PVariable((value(Id y))(position((start_p(""3 34 47))(end_p(""3 34 48)))))))(position((start_p(""3 34 47))(end_p(""3 34 48))))))))(position((start_p(""3 34 43))(end_p(""3 34 48))))))))(position((start_p(""3 34 40))(end_p(""3 34 49)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 53 59))(end_p(""4 53 71)))))()))(position((start_p(""4 53 59))(end_p(""4 53 71)))))((value(Literal((value(LString"This test is "))(position((start_p(""4 53 87))(end_p(""4 53 88)))))))(position((start_p(""4 53 72))(end_p(""4 53 89)))))))(position((start_p(""4 53 59))(end_p(""4 53 89)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 91 97))(end_p(""5 91 109)))))()))(position((start_p(""5 91 97))(end_p(""5 91 109)))))((value(Variable((value(Id x))(position((start_p(""5 91 111))(end_p(""5 91 112)))))()))(position((start_p(""5 91 110))(end_p(""5 91 113)))))))(position((start_p(""5 91 97))(end_p(""5 91 113)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 115 121))(end_p(""6 115 133)))))()))(position((start_p(""6 115 121))(end_p(""6 115 133)))))((value(Literal((value(LString" and "))(position((start_p(""6 115 141))(end_p(""6 115 142)))))))(position((start_p(""6 115 134))(end_p(""6 115 143)))))))(position((start_p(""6 115 121))(end_p(""6 115 143)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 145 151))(end_p(""7 145 163)))))()))(position((start_p(""7 145 151))(end_p(""7 145 163)))))((value(Variable((value(Id y))(position((start_p(""7 145 165))(end_p(""7 145 166)))))()))(position((start_p(""7 145 164))(end_p(""7 145 167)))))))(position((start_p(""7 145 151))(end_p(""7 145 167)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 169 175))(end_p(""8 169 187)))))()))(position((start_p(""8 169 175))(end_p(""8 169 187)))))((value(Literal((value(LString".\n"))(position((start_p(""8 169 193))(end_p(""8 169 194)))))))(position((start_p(""8 169 188))(end_p(""8 169 195)))))))(position((start_p(""8 169 175))(end_p(""8 169 195))))))))(position((start_p(""7 145 151))(end_p(""8 169 195))))))))(position((start_p(""6 115 121))(end_p(""8 169 195))))))))(position((start_p(""5 91 97))(end_p(""8 169 195))))))))(position((start_p(""4 53 59))(end_p(""8 169 195)))))))(position((start_p(""3 34 40))(end_p(""8 169 195))))))))(position((start_p(""2 11 15))(end_p(""9 196 201)))))))))(position((start_p(""1 0 0))(end_p(""9 196 201)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/50-match-09.eval.hopix.human-readable b/flap/tests/02-Interpreter/50-match-09.eval.hopix.human-readable new file mode 100644 index 0000000..19b747a --- /dev/null +++ b/flap/tests/02-Interpreter/50-match-09.eval.hopix.human-readable @@ -0,0 +1,9 @@ +let test = + match (K ("OK")) { + | K (x & y) -> + print_string ("This test is "); + print_string (x); + print_string (" and "); + print_string (y); + print_string (".\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/50-match-09.expected b/flap/tests/02-Interpreter/50-match-09.expected new file mode 100644 index 0000000..7e65012 --- /dev/null +++ b/flap/tests/02-Interpreter/50-match-09.expected @@ -0,0 +1 @@ +This test is OK and OK. diff --git a/flap/tests/02-Interpreter/51-match-10.eval.hopix b/flap/tests/02-Interpreter/51-match-10.eval.hopix new file mode 100644 index 0000000..b7231b5 --- /dev/null +++ b/flap/tests/02-Interpreter/51-match-10.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId K))(position((start_p(""2 11 22))(end_p(""2 11 23)))))()(((value(Tagged((value(KId K))(position((start_p(""2 11 25))(end_p(""2 11 26)))))()(((value(Literal((value(LString OK))(position((start_p(""2 11 31))(end_p(""2 11 32)))))))(position((start_p(""2 11 31))(end_p(""2 11 32))))))))(position((start_p(""2 11 25))(end_p(""2 11 33))))))))(position((start_p(""2 11 22))(end_p(""2 11 34)))))(((value(Branch((value(PTaggedValue((value(KId K))(position((start_p(""3 38 44))(end_p(""3 38 45)))))()(((value(PAnd(((value(PVariable((value(Id x))(position((start_p(""3 38 47))(end_p(""3 38 48)))))))(position((start_p(""3 38 47))(end_p(""3 38 48)))))((value(PTaggedValue((value(KId K))(position((start_p(""3 38 51))(end_p(""3 38 52)))))()(((value(PVariable((value(Id y))(position((start_p(""3 38 54))(end_p(""3 38 55)))))))(position((start_p(""3 38 54))(end_p(""3 38 55))))))))(position((start_p(""3 38 51))(end_p(""3 38 56))))))))(position((start_p(""3 38 47))(end_p(""3 38 56))))))))(position((start_p(""3 38 44))(end_p(""3 38 57)))))((value(Case((value(Variable((value(Id x))(position((start_p(""4 61 74))(end_p(""4 61 75)))))()))(position((start_p(""4 61 74))(end_p(""4 61 75)))))(((value(Branch((value(PTaggedValue((value(KId K))(position((start_p(""5 79 87))(end_p(""5 79 88)))))()(((value(PVariable((value(Id z))(position((start_p(""5 79 90))(end_p(""5 79 91)))))))(position((start_p(""5 79 90))(end_p(""5 79 91))))))))(position((start_p(""5 79 87))(end_p(""5 79 92)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 96 105))(end_p(""6 96 117)))))()))(position((start_p(""6 96 105))(end_p(""6 96 117)))))((value(Literal((value(LString"This test is "))(position((start_p(""6 96 133))(end_p(""6 96 134)))))))(position((start_p(""6 96 118))(end_p(""6 96 135)))))))(position((start_p(""6 96 105))(end_p(""6 96 135)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 137 146))(end_p(""7 137 158)))))()))(position((start_p(""7 137 146))(end_p(""7 137 158)))))((value(Variable((value(Id y))(position((start_p(""7 137 160))(end_p(""7 137 161)))))()))(position((start_p(""7 137 159))(end_p(""7 137 162)))))))(position((start_p(""7 137 146))(end_p(""7 137 162)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 164 173))(end_p(""8 164 185)))))()))(position((start_p(""8 164 173))(end_p(""8 164 185)))))((value(Literal((value(LString".\n"))(position((start_p(""8 164 191))(end_p(""8 164 192)))))))(position((start_p(""8 164 186))(end_p(""8 164 193)))))))(position((start_p(""8 164 173))(end_p(""8 164 193))))))))(position((start_p(""7 137 146))(end_p(""8 164 193))))))))(position((start_p(""6 96 105))(end_p(""8 164 193)))))))(position((start_p(""5 79 87))(end_p(""8 164 193))))))))(position((start_p(""4 61 67))(end_p(""9 194 201)))))))(position((start_p(""3 38 44))(end_p(""9 194 201))))))))(position((start_p(""2 11 15))(end_p(""10 202 207)))))))))(position((start_p(""1 0 0))(end_p(""10 202 207)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/51-match-10.eval.hopix.human-readable b/flap/tests/02-Interpreter/51-match-10.eval.hopix.human-readable new file mode 100644 index 0000000..a5950da --- /dev/null +++ b/flap/tests/02-Interpreter/51-match-10.eval.hopix.human-readable @@ -0,0 +1,10 @@ +let test = + match (K (K ("OK"))) { + | K (x & K (y)) -> + match (x) { + | K (z) -> + print_string ("This test is "); + print_string (y); + print_string (".\n") + } + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/51-match-10.expected b/flap/tests/02-Interpreter/51-match-10.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/51-match-10.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/52-match-11.eval.hopix b/flap/tests/02-Interpreter/52-match-11.eval.hopix new file mode 100644 index 0000000..41fefe3 --- /dev/null +++ b/flap/tests/02-Interpreter/52-match-11.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Case((value(Tagged((value(KId K))(position((start_p(""2 11 22))(end_p(""2 11 23)))))()(((value(Tagged((value(KId K))(position((start_p(""2 11 25))(end_p(""2 11 26)))))()(((value(Literal((value(LString OK))(position((start_p(""2 11 31))(end_p(""2 11 32)))))))(position((start_p(""2 11 31))(end_p(""2 11 32))))))))(position((start_p(""2 11 25))(end_p(""2 11 33))))))))(position((start_p(""2 11 22))(end_p(""2 11 34)))))(((value(Branch((value PWildcard)(position((start_p(""3 38 44))(end_p(""3 38 45)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 49 58))(end_p(""4 49 70)))))()))(position((start_p(""4 49 58))(end_p(""4 49 70)))))((value(Literal((value(LString"This test is too easy.\n"))(position((start_p(""4 49 97))(end_p(""4 49 98)))))))(position((start_p(""4 49 71))(end_p(""4 49 99)))))))(position((start_p(""4 49 58))(end_p(""4 49 99)))))))(position((start_p(""3 38 44))(end_p(""4 49 99))))))))(position((start_p(""2 11 15))(end_p(""5 100 105)))))))))(position((start_p(""1 0 0))(end_p(""5 100 105)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/52-match-11.eval.hopix.human-readable b/flap/tests/02-Interpreter/52-match-11.eval.hopix.human-readable new file mode 100644 index 0000000..e05e159 --- /dev/null +++ b/flap/tests/02-Interpreter/52-match-11.eval.hopix.human-readable @@ -0,0 +1,5 @@ +let test = + match (K (K ("OK"))) { + | _ -> + print_string ("This test is too easy.\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/52-match-11.expected b/flap/tests/02-Interpreter/52-match-11.expected new file mode 100644 index 0000000..f5c21c8 --- /dev/null +++ b/flap/tests/02-Interpreter/52-match-11.expected @@ -0,0 +1 @@ +This test is too easy. diff --git a/flap/tests/02-Interpreter/53-match-12.eval.hopix b/flap/tests/02-Interpreter/53-match-12.eval.hopix new file mode 100644 index 0000000..42bb175 --- /dev/null +++ b/flap/tests/02-Interpreter/53-match-12.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id write))(position((start_p(""1 0 4))(end_p(""1 0 9)))))()((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))((value(Case((value(Variable((value(Id x))(position((start_p(""2 18 27))(end_p(""2 18 28)))))()))(position((start_p(""2 18 27))(end_p(""2 18 28)))))(((value(Branch((value(PTaggedValue((value(KId O))(position((start_p(""3 32 36))(end_p(""3 32 37)))))()()))(position((start_p(""3 32 36))(end_p(""3 32 37)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""3 32 41))(end_p(""3 32 53)))))()))(position((start_p(""3 32 41))(end_p(""3 32 53)))))((value(Literal((value(LString O))(position((start_p(""3 32 57))(end_p(""3 32 58)))))))(position((start_p(""3 32 54))(end_p(""3 32 59)))))))(position((start_p(""3 32 41))(end_p(""3 32 59)))))))(position((start_p(""3 32 36))(end_p(""3 32 59)))))((value(Branch((value(PTaggedValue((value(KId K))(position((start_p(""4 60 64))(end_p(""4 60 65)))))()()))(position((start_p(""4 60 64))(end_p(""4 60 65)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""4 60 69))(end_p(""4 60 81)))))()))(position((start_p(""4 60 69))(end_p(""4 60 81)))))((value(Literal((value(LString K))(position((start_p(""4 60 85))(end_p(""4 60 86)))))))(position((start_p(""4 60 82))(end_p(""4 60 87)))))))(position((start_p(""4 60 69))(end_p(""4 60 87)))))))(position((start_p(""4 60 64))(end_p(""4 60 87)))))((value(Branch((value(PTaggedValue((value(KId D))(position((start_p(""5 88 92))(end_p(""5 88 93)))))()()))(position((start_p(""5 88 92))(end_p(""5 88 93)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 88 97))(end_p(""5 88 109)))))()))(position((start_p(""5 88 97))(end_p(""5 88 109)))))((value(Literal((value(LString .))(position((start_p(""5 88 113))(end_p(""5 88 114)))))))(position((start_p(""5 88 110))(end_p(""5 88 115)))))))(position((start_p(""5 88 97))(end_p(""5 88 115)))))))(position((start_p(""5 88 92))(end_p(""5 88 115)))))((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""6 116 120))(end_p(""6 116 121)))))()()))(position((start_p(""6 116 120))(end_p(""6 116 121)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 116 125))(end_p(""6 116 137)))))()))(position((start_p(""6 116 125))(end_p(""6 116 137)))))((value(Literal((value(LString"\n"))(position((start_p(""6 116 142))(end_p(""6 116 143)))))))(position((start_p(""6 116 138))(end_p(""6 116 144)))))))(position((start_p(""6 116 125))(end_p(""6 116 144)))))))(position((start_p(""6 116 120))(end_p(""6 116 144))))))))(position((start_p(""2 18 20))(end_p(""7 145 148))))))))(position((start_p(""1 0 12))(end_p(""7 145 148)))))))))(position((start_p(""1 0 0))(end_p(""7 145 148)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""9 150 154))(end_p(""9 150 158)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""10 161 163))(end_p(""10 161 175)))))()))(position((start_p(""10 161 163))(end_p(""10 161 175)))))((value(Literal((value(LString"This test is "))(position((start_p(""10 161 191))(end_p(""10 161 192)))))))(position((start_p(""10 161 176))(end_p(""10 161 193)))))))(position((start_p(""10 161 163))(end_p(""10 161 193)))))((value(Sequence(((value(Apply((value(Variable((value(Id write))(position((start_p(""11 195 197))(end_p(""11 195 202)))))()))(position((start_p(""11 195 197))(end_p(""11 195 202)))))((value(Tagged((value(KId O))(position((start_p(""11 195 204))(end_p(""11 195 205)))))()()))(position((start_p(""11 195 203))(end_p(""11 195 206)))))))(position((start_p(""11 195 197))(end_p(""11 195 206)))))((value(Sequence(((value(Apply((value(Variable((value(Id write))(position((start_p(""12 208 210))(end_p(""12 208 215)))))()))(position((start_p(""12 208 210))(end_p(""12 208 215)))))((value(Tagged((value(KId K))(position((start_p(""12 208 217))(end_p(""12 208 218)))))()()))(position((start_p(""12 208 216))(end_p(""12 208 219)))))))(position((start_p(""12 208 210))(end_p(""12 208 219)))))((value(Sequence(((value(Apply((value(Variable((value(Id write))(position((start_p(""13 221 223))(end_p(""13 221 228)))))()))(position((start_p(""13 221 223))(end_p(""13 221 228)))))((value(Tagged((value(KId D))(position((start_p(""13 221 230))(end_p(""13 221 231)))))()()))(position((start_p(""13 221 229))(end_p(""13 221 232)))))))(position((start_p(""13 221 223))(end_p(""13 221 232)))))((value(Apply((value(Variable((value(Id write))(position((start_p(""14 234 236))(end_p(""14 234 241)))))()))(position((start_p(""14 234 236))(end_p(""14 234 241)))))((value(Tagged((value(KId N))(position((start_p(""14 234 243))(end_p(""14 234 244)))))()()))(position((start_p(""14 234 242))(end_p(""14 234 245)))))))(position((start_p(""14 234 236))(end_p(""14 234 245))))))))(position((start_p(""13 221 223))(end_p(""14 234 245))))))))(position((start_p(""12 208 210))(end_p(""14 234 245))))))))(position((start_p(""11 195 197))(end_p(""14 234 245))))))))(position((start_p(""10 161 163))(end_p(""14 234 245)))))))))(position((start_p(""9 150 150))(end_p(""14 234 245)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/53-match-12.eval.hopix.human-readable b/flap/tests/02-Interpreter/53-match-12.eval.hopix.human-readable new file mode 100644 index 0000000..9c1c264 --- /dev/null +++ b/flap/tests/02-Interpreter/53-match-12.eval.hopix.human-readable @@ -0,0 +1,14 @@ +let write = \x -> + match (x) { + | O -> print_string ("O") + | K -> print_string ("K") + | D -> print_string (".") + | N -> print_string ("\n") + } + +let test = + print_string ("This test is "); + write (O); + write (K); + write (D); + write (N) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/53-match-12.expected b/flap/tests/02-Interpreter/53-match-12.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/53-match-12.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/54-match-13.eval.hopix b/flap/tests/02-Interpreter/54-match-13.eval.hopix new file mode 100644 index 0000000..95c863e --- /dev/null +++ b/flap/tests/02-Interpreter/54-match-13.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id show))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""1 0 10))(end_p(""1 0 11)))))))(position((start_p(""1 0 9))(end_p(""1 0 12)))))((value(Case((value(Variable((value(Id l))(position((start_p(""2 15 24))(end_p(""2 15 25)))))()))(position((start_p(""2 15 24))(end_p(""2 15 25)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""2 15 29))(end_p(""2 15 30)))))()()))(position((start_p(""2 15 29))(end_p(""2 15 30)))))((value(Variable((value(Id nothing))(position((start_p(""2 15 34))(end_p(""2 15 41)))))()))(position((start_p(""2 15 34))(end_p(""2 15 41)))))))(position((start_p(""2 15 29))(end_p(""2 15 41)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""2 15 44))(end_p(""2 15 45)))))()(((value(PVariable((value(Id x))(position((start_p(""2 15 47))(end_p(""2 15 48)))))))(position((start_p(""2 15 47))(end_p(""2 15 48)))))((value(PVariable((value(Id xs))(position((start_p(""2 15 50))(end_p(""2 15 52)))))))(position((start_p(""2 15 50))(end_p(""2 15 52))))))))(position((start_p(""2 15 44))(end_p(""2 15 53)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""2 15 57))(end_p(""2 15 69)))))()))(position((start_p(""2 15 57))(end_p(""2 15 69)))))((value(Variable((value(Id x))(position((start_p(""2 15 71))(end_p(""2 15 72)))))()))(position((start_p(""2 15 70))(end_p(""2 15 73)))))))(position((start_p(""2 15 57))(end_p(""2 15 73)))))((value(Apply((value(Variable((value(Id show))(position((start_p(""2 15 75))(end_p(""2 15 79)))))()))(position((start_p(""2 15 75))(end_p(""2 15 79)))))((value(Variable((value(Id xs))(position((start_p(""2 15 81))(end_p(""2 15 83)))))()))(position((start_p(""2 15 80))(end_p(""2 15 84)))))))(position((start_p(""2 15 75))(end_p(""2 15 84))))))))(position((start_p(""2 15 57))(end_p(""2 15 84)))))))(position((start_p(""2 15 44))(end_p(""2 15 84))))))))(position((start_p(""2 15 17))(end_p(""2 15 86)))))))))))(position((start_p(""1 0 0))(end_p(""2 15 86)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""4 88 92))(end_p(""4 88 96)))))()((value(Apply((value(Variable((value(Id show))(position((start_p(""5 99 101))(end_p(""5 99 105)))))()))(position((start_p(""5 99 101))(end_p(""5 99 105)))))((value(Tagged((value(KId C))(position((start_p(""5 99 107))(end_p(""5 99 108)))))()(((value(Literal((value(LString This))(position((start_p(""5 99 115))(end_p(""5 99 116)))))))(position((start_p(""5 99 115))(end_p(""5 99 116)))))((value(Tagged((value(KId C))(position((start_p(""5 99 118))(end_p(""5 99 119)))))()(((value(Literal((value(LString" test is "))(position((start_p(""5 99 131))(end_p(""5 99 132)))))))(position((start_p(""5 99 131))(end_p(""5 99 132)))))((value(Tagged((value(KId C))(position((start_p(""5 99 134))(end_p(""5 99 135)))))()(((value(Literal((value(LString OK))(position((start_p(""5 99 140))(end_p(""5 99 141)))))))(position((start_p(""5 99 140))(end_p(""5 99 141)))))((value(Tagged((value(KId C))(position((start_p(""5 99 143))(end_p(""5 99 144)))))()(((value(Literal((value(LString".\n."))(position((start_p(""5 99 151))(end_p(""5 99 152)))))))(position((start_p(""5 99 151))(end_p(""5 99 152)))))((value(Tagged((value(KId N))(position((start_p(""5 99 154))(end_p(""5 99 155)))))()()))(position((start_p(""5 99 154))(end_p(""5 99 155))))))))(position((start_p(""5 99 143))(end_p(""5 99 156))))))))(position((start_p(""5 99 134))(end_p(""5 99 157))))))))(position((start_p(""5 99 118))(end_p(""5 99 158))))))))(position((start_p(""5 99 106))(end_p(""5 99 160)))))))(position((start_p(""5 99 101))(end_p(""5 99 160)))))))))(position((start_p(""4 88 88))(end_p(""5 99 160)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/54-match-13.eval.hopix.human-readable b/flap/tests/02-Interpreter/54-match-13.eval.hopix.human-readable new file mode 100644 index 0000000..a23c1e1 --- /dev/null +++ b/flap/tests/02-Interpreter/54-match-13.eval.hopix.human-readable @@ -0,0 +1,5 @@ +fun show (l) = + match (l) { N -> nothing | C (x, xs) -> print_string (x); show (xs) } + +let test = + show (C ("This", C (" test is ", C ("OK", C (".\n.", N))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/54-match-13.expected b/flap/tests/02-Interpreter/54-match-13.expected new file mode 100644 index 0000000..814b7e4 --- /dev/null +++ b/flap/tests/02-Interpreter/54-match-13.expected @@ -0,0 +1,2 @@ +This test is OK. +. \ No newline at end of file diff --git a/flap/tests/02-Interpreter/55-if-01.eval.hopix b/flap/tests/02-Interpreter/55-if-01.eval.hopix new file mode 100644 index 0000000..ff9837a --- /dev/null +++ b/flap/tests/02-Interpreter/55-if-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id f))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 7))(end_p(""1 0 8)))))))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""2 12 20))(end_p(""2 12 22)))))()))(position((start_p(""2 12 20))(end_p(""2 12 22)))))((value(Variable((value(Id x))(position((start_p(""2 12 18))(end_p(""2 12 19)))))()))(position((start_p(""2 12 18))(end_p(""2 12 19)))))))(position((start_p(""2 12 18))(end_p(""2 12 19)))))((value(Literal((value(LInt 0))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 17))(end_p(""2 12 25)))))((value(Literal((value(LString OK))(position((start_p(""2 12 36))(end_p(""2 12 37)))))))(position((start_p(""2 12 36))(end_p(""2 12 37)))))((value(Literal((value(LString KO))(position((start_p(""2 12 50))(end_p(""2 12 51)))))))(position((start_p(""2 12 50))(end_p(""2 12 51)))))))(position((start_p(""2 12 14))(end_p(""2 12 53)))))))))))(position((start_p(""1 0 0))(end_p(""2 12 53)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""4 55 59))(end_p(""4 55 63)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""5 66 68))(end_p(""5 66 80)))))()))(position((start_p(""5 66 68))(end_p(""5 66 80)))))((value(Literal((value(LString"This test is "))(position((start_p(""5 66 96))(end_p(""5 66 97)))))))(position((start_p(""5 66 81))(end_p(""5 66 98)))))))(position((start_p(""5 66 68))(end_p(""5 66 98)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 100 102))(end_p(""6 100 114)))))()))(position((start_p(""6 100 102))(end_p(""6 100 114)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""6 100 116))(end_p(""6 100 117)))))()))(position((start_p(""6 100 116))(end_p(""6 100 117)))))((value(Literal((value(LInt 33))(position((start_p(""6 100 119))(end_p(""6 100 121)))))))(position((start_p(""6 100 118))(end_p(""6 100 122)))))))(position((start_p(""6 100 115))(end_p(""6 100 123)))))))(position((start_p(""6 100 102))(end_p(""6 100 123)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 125 127))(end_p(""7 125 139)))))()))(position((start_p(""7 125 127))(end_p(""7 125 139)))))((value(Literal((value(LString".\n"))(position((start_p(""7 125 145))(end_p(""7 125 146)))))))(position((start_p(""7 125 140))(end_p(""7 125 147)))))))(position((start_p(""7 125 127))(end_p(""7 125 147))))))))(position((start_p(""6 100 102))(end_p(""7 125 147))))))))(position((start_p(""5 66 68))(end_p(""7 125 147)))))))))(position((start_p(""4 55 55))(end_p(""7 125 147)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/55-if-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/55-if-01.eval.hopix.human-readable new file mode 100644 index 0000000..0a62b30 --- /dev/null +++ b/flap/tests/02-Interpreter/55-if-01.eval.hopix.human-readable @@ -0,0 +1,7 @@ +fun f (x) = + if (x >? 0) then { "OK" } else { "KO" } + +let test = + print_string ("This test is "); + print_string (f (33)); + print_string (".\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/55-if-01.expected b/flap/tests/02-Interpreter/55-if-01.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/55-if-01.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/56-if-02.eval.hopix b/flap/tests/02-Interpreter/56-if-02.eval.hopix new file mode 100644 index 0000000..15f3d1f --- /dev/null +++ b/flap/tests/02-Interpreter/56-if-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id f))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 7))(end_p(""1 0 8)))))))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""2 12 20))(end_p(""2 12 22)))))()))(position((start_p(""2 12 20))(end_p(""2 12 22)))))((value(Variable((value(Id x))(position((start_p(""2 12 18))(end_p(""2 12 19)))))()))(position((start_p(""2 12 18))(end_p(""2 12 19)))))))(position((start_p(""2 12 18))(end_p(""2 12 19)))))((value(Literal((value(LInt 0))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 17))(end_p(""2 12 25)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""3 33 43))(end_p(""3 33 45)))))()))(position((start_p(""3 33 43))(end_p(""3 33 45)))))((value(Variable((value(Id x))(position((start_p(""3 33 41))(end_p(""3 33 42)))))()))(position((start_p(""3 33 41))(end_p(""3 33 42)))))))(position((start_p(""3 33 41))(end_p(""3 33 42)))))((value(Literal((value(LInt 1))(position((start_p(""3 33 46))(end_p(""3 33 47)))))))(position((start_p(""3 33 46))(end_p(""3 33 47)))))))(position((start_p(""3 33 40))(end_p(""3 33 48)))))((value(Literal((value(LString OK))(position((start_p(""3 33 59))(end_p(""3 33 60)))))))(position((start_p(""3 33 59))(end_p(""3 33 60)))))((value(Literal((value(LString KO))(position((start_p(""4 63 77))(end_p(""4 63 78)))))))(position((start_p(""4 63 77))(end_p(""4 63 78)))))))(position((start_p(""3 33 37))(end_p(""4 63 80)))))((value(Literal((value(LString KO))(position((start_p(""5 81 95))(end_p(""5 81 96)))))))(position((start_p(""5 81 95))(end_p(""5 81 96)))))))(position((start_p(""2 12 14))(end_p(""5 81 98)))))))))))(position((start_p(""1 0 0))(end_p(""5 81 98)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""7 100 104))(end_p(""7 100 108)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 111 113))(end_p(""8 111 125)))))()))(position((start_p(""8 111 113))(end_p(""8 111 125)))))((value(Literal((value(LString"This test is "))(position((start_p(""8 111 141))(end_p(""8 111 142)))))))(position((start_p(""8 111 126))(end_p(""8 111 143)))))))(position((start_p(""8 111 113))(end_p(""8 111 143)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""9 145 147))(end_p(""9 145 159)))))()))(position((start_p(""9 145 147))(end_p(""9 145 159)))))((value(Apply((value(Variable((value(Id f))(position((start_p(""9 145 161))(end_p(""9 145 162)))))()))(position((start_p(""9 145 161))(end_p(""9 145 162)))))((value(Literal((value(LInt 33))(position((start_p(""9 145 164))(end_p(""9 145 166)))))))(position((start_p(""9 145 163))(end_p(""9 145 167)))))))(position((start_p(""9 145 160))(end_p(""9 145 168)))))))(position((start_p(""9 145 147))(end_p(""9 145 168)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""10 170 172))(end_p(""10 170 184)))))()))(position((start_p(""10 170 172))(end_p(""10 170 184)))))((value(Literal((value(LString".\n"))(position((start_p(""10 170 190))(end_p(""10 170 191)))))))(position((start_p(""10 170 185))(end_p(""10 170 192)))))))(position((start_p(""10 170 172))(end_p(""10 170 192))))))))(position((start_p(""9 145 147))(end_p(""10 170 192))))))))(position((start_p(""8 111 113))(end_p(""10 170 192)))))))))(position((start_p(""7 100 100))(end_p(""10 170 192)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/56-if-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/56-if-02.eval.hopix.human-readable new file mode 100644 index 0000000..dfbc8e5 --- /dev/null +++ b/flap/tests/02-Interpreter/56-if-02.eval.hopix.human-readable @@ -0,0 +1,10 @@ +fun f (x) = + if (x >? 0) then { + if (x >? 1) then { "OK" } + else { "KO" } + } else { "KO" } + +let test = + print_string ("This test is "); + print_string (f (33)); + print_string (".\n") \ No newline at end of file diff --git a/flap/tests/02-Interpreter/56-if-02.expected b/flap/tests/02-Interpreter/56-if-02.expected new file mode 100644 index 0000000..1ac32ce --- /dev/null +++ b/flap/tests/02-Interpreter/56-if-02.expected @@ -0,0 +1 @@ +This test is OK. diff --git a/flap/tests/02-Interpreter/57-if-03.eval.hopix b/flap/tests/02-Interpreter/57-if-03.eval.hopix new file mode 100644 index 0000000..f92aff7 --- /dev/null +++ b/flap/tests/02-Interpreter/57-if-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id f))(position((start_p(""1 0 4))(end_p(""1 0 5)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""1 0 7))(end_p(""1 0 8)))))))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""2 12 20))(end_p(""2 12 22)))))()))(position((start_p(""2 12 20))(end_p(""2 12 22)))))((value(Variable((value(Id x))(position((start_p(""2 12 18))(end_p(""2 12 19)))))()))(position((start_p(""2 12 18))(end_p(""2 12 19)))))))(position((start_p(""2 12 18))(end_p(""2 12 19)))))((value(Literal((value(LInt 0))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 23))(end_p(""2 12 24)))))))(position((start_p(""2 12 17))(end_p(""2 12 25)))))((value(Literal((value(LString KO))(position((start_p(""2 12 36))(end_p(""2 12 37)))))))(position((start_p(""2 12 36))(end_p(""2 12 37)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `? 0) then { "KO" } + else { if (x ?`))(position((start_p(""4 49 63))(end_p(""4 49 65)))))()))(position((start_p(""4 49 63))(end_p(""4 49 65)))))((value(Read((value(Variable((value(Id x))(position((start_p(""4 49 61))(end_p(""4 49 62)))))()))(position((start_p(""4 49 61))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))((value(Literal((value(LInt 0))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 60))(end_p(""4 49 67)))))((value(Sequence(((value(Assign((value(Variable((value(Id x))(position((start_p(""5 71 77))(end_p(""5 71 78)))))()))(position((start_p(""5 71 77))(end_p(""5 71 78)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""5 71 85))(end_p(""5 71 86)))))()))(position((start_p(""5 71 85))(end_p(""5 71 86)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 71 83))(end_p(""5 71 84)))))()))(position((start_p(""5 71 83))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))((value(Literal((value(LInt 1))(position((start_p(""5 71 87))(end_p(""5 71 88)))))))(position((start_p(""5 71 87))(end_p(""5 71 88)))))))(position((start_p(""5 71 82))(end_p(""5 71 88)))))))(position((start_p(""5 71 77))(end_p(""5 71 88)))))((value(Assign((value(Variable((value(Id y))(position((start_p(""6 90 96))(end_p(""6 90 97)))))()))(position((start_p(""6 90 96))(end_p(""6 90 97)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""6 90 104))(end_p(""6 90 105)))))()))(position((start_p(""6 90 104))(end_p(""6 90 105)))))((value(Read((value(Variable((value(Id y))(position((start_p(""6 90 102))(end_p(""6 90 103)))))()))(position((start_p(""6 90 102))(end_p(""6 90 103)))))))(position((start_p(""6 90 101))(end_p(""6 90 103)))))))(position((start_p(""6 90 101))(end_p(""6 90 103)))))((value(Literal((value(LInt 1))(position((start_p(""6 90 106))(end_p(""6 90 107)))))))(position((start_p(""6 90 106))(end_p(""6 90 107)))))))(position((start_p(""6 90 101))(end_p(""6 90 107)))))))(position((start_p(""6 90 96))(end_p(""6 90 107))))))))(position((start_p(""5 71 77))(end_p(""6 90 107)))))))(position((start_p(""4 49 53))(end_p(""7 108 113)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""8 115 126))(end_p(""8 115 128)))))()))(position((start_p(""8 115 126))(end_p(""8 115 128)))))((value(Read((value(Variable((value(Id y))(position((start_p(""8 115 124))(end_p(""8 115 125)))))()))(position((start_p(""8 115 124))(end_p(""8 115 125)))))))(position((start_p(""8 115 123))(end_p(""8 115 125)))))))(position((start_p(""8 115 123))(end_p(""8 115 125)))))((value(Literal((value(LInt 5))(position((start_p(""8 115 129))(end_p(""8 115 130)))))))(position((start_p(""8 115 129))(end_p(""8 115 130)))))))(position((start_p(""8 115 122))(end_p(""8 115 131)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""9 139 145))(end_p(""9 139 157)))))()))(position((start_p(""9 139 145))(end_p(""9 139 157)))))((value(Literal((value(LString"This test is OK!\n"))(position((start_p(""9 139 178))(end_p(""9 139 179)))))))(position((start_p(""9 139 158))(end_p(""9 139 180)))))))(position((start_p(""9 139 145))(end_p(""9 139 180)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""11 194 200))(end_p(""11 194 212)))))()))(position((start_p(""11 194 200))(end_p(""11 194 212)))))((value(Literal((value(LString"This is KO!\n"))(position((start_p(""11 194 228))(end_p(""11 194 229)))))))(position((start_p(""11 194 213))(end_p(""11 194 230)))))))(position((start_p(""11 194 200))(end_p(""11 194 230)))))))(position((start_p(""8 115 119))(end_p(""12 231 236))))))))(position((start_p(""4 49 53))(end_p(""12 231 236)))))))(position((start_p(""3 30 34))(end_p(""12 231 236)))))))(position((start_p(""2 11 15))(end_p(""12 231 236)))))))))(position((start_p(""1 0 0))(end_p(""12 231 236)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/58-while-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/58-while-01.eval.hopix.human-readable new file mode 100644 index 0000000..29a0ae8 --- /dev/null +++ b/flap/tests/02-Interpreter/58-while-01.eval.hopix.human-readable @@ -0,0 +1,12 @@ +let test = + let x = ref 5; + let y = ref 0; + while (!x >? 0) { + x := !x - 1; + y := !y + 1 + }; + if (!y =? 5) then { + print_string ("This test is OK!\n") + } else { + print_string ("This is KO!\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/58-while-01.expected b/flap/tests/02-Interpreter/58-while-01.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/58-while-01.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/59-while-02.eval.hopix b/flap/tests/02-Interpreter/59-while-02.eval.hopix new file mode 100644 index 0000000..38ec83e --- /dev/null +++ b/flap/tests/02-Interpreter/59-while-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 5))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Define(SimpleValue(((value(Id y))(position((start_p(""3 30 38))(end_p(""3 30 39)))))()((value(Ref((value(Literal((value(LInt 0))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 42))(end_p(""3 30 47)))))))((value(Define(SimpleValue(((value(Id z))(position((start_p(""4 49 57))(end_p(""4 49 58)))))()((value(Ref((value(Literal((value(LInt 5))(position((start_p(""4 49 65))(end_p(""4 49 66)))))))(position((start_p(""4 49 65))(end_p(""4 49 66)))))))(position((start_p(""4 49 61))(end_p(""4 49 66)))))))((value(Sequence(((value(While((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""5 68 82))(end_p(""5 68 84)))))()))(position((start_p(""5 68 82))(end_p(""5 68 84)))))((value(Read((value(Variable((value(Id x))(position((start_p(""5 68 80))(end_p(""5 68 81)))))()))(position((start_p(""5 68 80))(end_p(""5 68 81)))))))(position((start_p(""5 68 79))(end_p(""5 68 81)))))))(position((start_p(""5 68 79))(end_p(""5 68 81)))))((value(Literal((value(LInt 0))(position((start_p(""5 68 85))(end_p(""5 68 86)))))))(position((start_p(""5 68 85))(end_p(""5 68 86)))))))(position((start_p(""5 68 79))(end_p(""5 68 86)))))((value(Sequence(((value(Assign((value(Variable((value(Id x))(position((start_p(""6 90 96))(end_p(""6 90 97)))))()))(position((start_p(""6 90 96))(end_p(""6 90 97)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""6 90 104))(end_p(""6 90 105)))))()))(position((start_p(""6 90 104))(end_p(""6 90 105)))))((value(Read((value(Variable((value(Id x))(position((start_p(""6 90 102))(end_p(""6 90 103)))))()))(position((start_p(""6 90 102))(end_p(""6 90 103)))))))(position((start_p(""6 90 101))(end_p(""6 90 103)))))))(position((start_p(""6 90 101))(end_p(""6 90 103)))))((value(Literal((value(LInt 1))(position((start_p(""6 90 106))(end_p(""6 90 107)))))))(position((start_p(""6 90 106))(end_p(""6 90 107)))))))(position((start_p(""6 90 101))(end_p(""6 90 107)))))))(position((start_p(""6 90 96))(end_p(""6 90 107)))))((value(Sequence(((value(While((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""7 109 125))(end_p(""7 109 127)))))()))(position((start_p(""7 109 125))(end_p(""7 109 127)))))((value(Read((value(Variable((value(Id z))(position((start_p(""7 109 123))(end_p(""7 109 124)))))()))(position((start_p(""7 109 123))(end_p(""7 109 124)))))))(position((start_p(""7 109 122))(end_p(""7 109 124)))))))(position((start_p(""7 109 122))(end_p(""7 109 124)))))((value(Literal((value(LInt 0))(position((start_p(""7 109 128))(end_p(""7 109 129)))))))(position((start_p(""7 109 128))(end_p(""7 109 129)))))))(position((start_p(""7 109 122))(end_p(""7 109 129)))))((value(Sequence(((value(Assign((value(Variable((value(Id y))(position((start_p(""8 133 141))(end_p(""8 133 142)))))()))(position((start_p(""8 133 141))(end_p(""8 133 142)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""8 133 149))(end_p(""8 133 150)))))()))(position((start_p(""8 133 149))(end_p(""8 133 150)))))((value(Read((value(Variable((value(Id y))(position((start_p(""8 133 147))(end_p(""8 133 148)))))()))(position((start_p(""8 133 147))(end_p(""8 133 148)))))))(position((start_p(""8 133 146))(end_p(""8 133 148)))))))(position((start_p(""8 133 146))(end_p(""8 133 148)))))((value(Literal((value(LInt 1))(position((start_p(""8 133 151))(end_p(""8 133 152)))))))(position((start_p(""8 133 151))(end_p(""8 133 152)))))))(position((start_p(""8 133 146))(end_p(""8 133 152)))))))(position((start_p(""8 133 141))(end_p(""8 133 152)))))((value(Assign((value(Variable((value(Id z))(position((start_p(""9 154 162))(end_p(""9 154 163)))))()))(position((start_p(""9 154 162))(end_p(""9 154 163)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""9 154 170))(end_p(""9 154 171)))))()))(position((start_p(""9 154 170))(end_p(""9 154 171)))))((value(Read((value(Variable((value(Id z))(position((start_p(""9 154 168))(end_p(""9 154 169)))))()))(position((start_p(""9 154 168))(end_p(""9 154 169)))))))(position((start_p(""9 154 167))(end_p(""9 154 169)))))))(position((start_p(""9 154 167))(end_p(""9 154 169)))))((value(Literal((value(LInt 1))(position((start_p(""9 154 172))(end_p(""9 154 173)))))))(position((start_p(""9 154 172))(end_p(""9 154 173)))))))(position((start_p(""9 154 167))(end_p(""9 154 173)))))))(position((start_p(""9 154 162))(end_p(""9 154 173))))))))(position((start_p(""8 133 141))(end_p(""9 154 173)))))))(position((start_p(""7 109 115))(end_p(""10 174 181)))))((value(Assign((value(Variable((value(Id y))(position((start_p(""11 183 189))(end_p(""11 183 190)))))()))(position((start_p(""11 183 189))(end_p(""11 183 190)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""11 183 197))(end_p(""11 183 198)))))()))(position((start_p(""11 183 197))(end_p(""11 183 198)))))((value(Read((value(Variable((value(Id y))(position((start_p(""11 183 195))(end_p(""11 183 196)))))()))(position((start_p(""11 183 195))(end_p(""11 183 196)))))))(position((start_p(""11 183 194))(end_p(""11 183 196)))))))(position((start_p(""11 183 194))(end_p(""11 183 196)))))((value(Literal((value(LInt 1))(position((start_p(""11 183 199))(end_p(""11 183 200)))))))(position((start_p(""11 183 199))(end_p(""11 183 200)))))))(position((start_p(""11 183 194))(end_p(""11 183 200)))))))(position((start_p(""11 183 189))(end_p(""11 183 200))))))))(position((start_p(""7 109 115))(end_p(""11 183 200))))))))(position((start_p(""6 90 96))(end_p(""11 183 200)))))))(position((start_p(""5 68 72))(end_p(""12 201 206)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""13 208 219))(end_p(""13 208 221)))))()))(position((start_p(""13 208 219))(end_p(""13 208 221)))))((value(Read((value(Variable((value(Id y))(position((start_p(""13 208 217))(end_p(""13 208 218)))))()))(position((start_p(""13 208 217))(end_p(""13 208 218)))))))(position((start_p(""13 208 216))(end_p(""13 208 218)))))))(position((start_p(""13 208 216))(end_p(""13 208 218)))))((value(Literal((value(LInt 10))(position((start_p(""13 208 222))(end_p(""13 208 224)))))))(position((start_p(""13 208 222))(end_p(""13 208 224)))))))(position((start_p(""13 208 215))(end_p(""13 208 225)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""14 233 239))(end_p(""14 233 251)))))()))(position((start_p(""14 233 239))(end_p(""14 233 251)))))((value(Literal((value(LString"This test is OK!\n"))(position((start_p(""14 233 272))(end_p(""14 233 273)))))))(position((start_p(""14 233 252))(end_p(""14 233 274)))))))(position((start_p(""14 233 239))(end_p(""14 233 274)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""16 288 294))(end_p(""16 288 306)))))()))(position((start_p(""16 288 294))(end_p(""16 288 306)))))((value(Literal((value(LString"This is KO!\n"))(position((start_p(""16 288 322))(end_p(""16 288 323)))))))(position((start_p(""16 288 307))(end_p(""16 288 324)))))))(position((start_p(""16 288 294))(end_p(""16 288 324)))))))(position((start_p(""13 208 212))(end_p(""17 325 330))))))))(position((start_p(""5 68 72))(end_p(""17 325 330)))))))(position((start_p(""4 49 53))(end_p(""17 325 330)))))))(position((start_p(""3 30 34))(end_p(""17 325 330)))))))(position((start_p(""2 11 15))(end_p(""17 325 330)))))))))(position((start_p(""1 0 0))(end_p(""17 325 330)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/59-while-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/59-while-02.eval.hopix.human-readable new file mode 100644 index 0000000..7cd739b --- /dev/null +++ b/flap/tests/02-Interpreter/59-while-02.eval.hopix.human-readable @@ -0,0 +1,17 @@ +let test = + let x = ref 5; + let y = ref 0; + let z = ref 5; + while (!x >? 0) { + x := !x - 1; + while (!z >? 0) { + y := !y + 1; + z := !z - 1 + }; + y := !y + 1 + }; + if (!y =? 10) then { + print_string ("This test is OK!\n") + } else { + print_string ("This is KO!\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/59-while-02.expected b/flap/tests/02-Interpreter/59-while-02.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/59-while-02.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/60-while-03.eval.hopix b/flap/tests/02-Interpreter/60-while-03.eval.hopix new file mode 100644 index 0000000..da2895b --- /dev/null +++ b/flap/tests/02-Interpreter/60-while-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 5))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Define(SimpleValue(((value(Id y))(position((start_p(""3 30 38))(end_p(""3 30 39)))))()((value(Ref((value(Literal((value(LInt 0))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 42))(end_p(""3 30 47)))))))((value(Define(SimpleValue(((value(Id z))(position((start_p(""4 49 57))(end_p(""4 49 58)))))()((value(Ref((value(Literal((value(LInt 5))(position((start_p(""4 49 65))(end_p(""4 49 66)))))))(position((start_p(""4 49 65))(end_p(""4 49 66)))))))(position((start_p(""4 49 61))(end_p(""4 49 66)))))))((value(Sequence(((value(While((value(Apply((value(Apply((value(Variable((value(Id `?`))(position((start_p(""4 49 63))(end_p(""4 49 65)))))()))(position((start_p(""4 49 63))(end_p(""4 49 65)))))((value(Read((value(Variable((value(Id n))(position((start_p(""4 49 61))(end_p(""4 49 62)))))()))(position((start_p(""4 49 61))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))))(position((start_p(""4 49 60))(end_p(""4 49 62)))))((value(Literal((value(LInt 0))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 66))(end_p(""4 49 67)))))))(position((start_p(""4 49 60))(end_p(""4 49 67)))))((value(Sequence(((value(Assign((value(Variable((value(Id r))(position((start_p(""5 71 77))(end_p(""5 71 78)))))()))(position((start_p(""5 71 77))(end_p(""5 71 78)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""5 71 85))(end_p(""5 71 86)))))()))(position((start_p(""5 71 85))(end_p(""5 71 86)))))((value(Read((value(Variable((value(Id r))(position((start_p(""5 71 83))(end_p(""5 71 84)))))()))(position((start_p(""5 71 83))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))))(position((start_p(""5 71 82))(end_p(""5 71 84)))))((value(Read((value(Variable((value(Id n))(position((start_p(""5 71 88))(end_p(""5 71 89)))))()))(position((start_p(""5 71 88))(end_p(""5 71 89)))))))(position((start_p(""5 71 87))(end_p(""5 71 89)))))))(position((start_p(""5 71 82))(end_p(""5 71 89)))))))(position((start_p(""5 71 77))(end_p(""5 71 89)))))((value(Assign((value(Variable((value(Id n))(position((start_p(""6 91 97))(end_p(""6 91 98)))))()))(position((start_p(""6 91 97))(end_p(""6 91 98)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""6 91 105))(end_p(""6 91 106)))))()))(position((start_p(""6 91 105))(end_p(""6 91 106)))))((value(Read((value(Variable((value(Id n))(position((start_p(""6 91 103))(end_p(""6 91 104)))))()))(position((start_p(""6 91 103))(end_p(""6 91 104)))))))(position((start_p(""6 91 102))(end_p(""6 91 104)))))))(position((start_p(""6 91 102))(end_p(""6 91 104)))))((value(Literal((value(LInt 1))(position((start_p(""6 91 107))(end_p(""6 91 108)))))))(position((start_p(""6 91 107))(end_p(""6 91 108)))))))(position((start_p(""6 91 102))(end_p(""6 91 108)))))))(position((start_p(""6 91 97))(end_p(""6 91 108))))))))(position((start_p(""5 71 77))(end_p(""6 91 108)))))))(position((start_p(""4 49 53))(end_p(""7 109 114)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""8 116 120))(end_p(""8 116 132)))))()))(position((start_p(""8 116 120))(end_p(""8 116 132)))))((value(Literal((value(LString"This test is "))(position((start_p(""8 116 148))(end_p(""8 116 149)))))))(position((start_p(""8 116 133))(end_p(""8 116 150)))))))(position((start_p(""8 116 120))(end_p(""8 116 150)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""9 152 156))(end_p(""9 152 168)))))()))(position((start_p(""9 152 156))(end_p(""9 152 168)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""9 152 177))(end_p(""9 152 179)))))()))(position((start_p(""9 152 177))(end_p(""9 152 179)))))((value(Read((value(Variable((value(Id r))(position((start_p(""9 152 175))(end_p(""9 152 176)))))()))(position((start_p(""9 152 175))(end_p(""9 152 176)))))))(position((start_p(""9 152 174))(end_p(""9 152 176)))))))(position((start_p(""9 152 174))(end_p(""9 152 176)))))((value(Literal((value(LInt 120))(position((start_p(""9 152 180))(end_p(""9 152 183)))))))(position((start_p(""9 152 180))(end_p(""9 152 183)))))))(position((start_p(""9 152 173))(end_p(""9 152 184)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""9 152 198))(end_p(""9 152 199)))))))(position((start_p(""9 152 198))(end_p(""9 152 199)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""9 152 215))(end_p(""9 152 216)))))))(position((start_p(""9 152 215))(end_p(""9 152 216)))))))(position((start_p(""9 152 169))(end_p(""9 152 219)))))))(position((start_p(""9 152 156))(end_p(""9 152 219))))))))(position((start_p(""8 116 120))(end_p(""9 152 219))))))))(position((start_p(""4 49 53))(end_p(""9 152 219)))))))(position((start_p(""3 30 34))(end_p(""9 152 219)))))))(position((start_p(""2 11 15))(end_p(""9 152 219)))))))))(position((start_p(""1 0 0))(end_p(""9 152 219)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/61-while-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/61-while-04.eval.hopix.human-readable new file mode 100644 index 0000000..a6046a1 --- /dev/null +++ b/flap/tests/02-Interpreter/61-while-04.eval.hopix.human-readable @@ -0,0 +1,9 @@ +let test = + let r = ref 1; + let n = ref 5; + while (!n >? 0) { + r := !r * !n; + n := !n - 1 + }; + print_string ("This test is "); + print_string (if (!r =? 120) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/61-while-04.expected b/flap/tests/02-Interpreter/61-while-04.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/61-while-04.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/62-for-01.eval.hopix b/flap/tests/02-Interpreter/62-for-01.eval.hopix new file mode 100644 index 0000000..68ad807 --- /dev/null +++ b/flap/tests/02-Interpreter/62-for-01.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id r))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 1))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""3 30 38))(end_p(""3 30 39)))))((value(Literal((value(LInt 1))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))((value(Literal((value(LInt 5))(position((start_p(""3 30 53))(end_p(""3 30 54)))))))(position((start_p(""3 30 53))(end_p(""3 30 54)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""4 58 64))(end_p(""4 58 65)))))()))(position((start_p(""4 58 64))(end_p(""4 58 65)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""4 58 72))(end_p(""4 58 73)))))()))(position((start_p(""4 58 72))(end_p(""4 58 73)))))((value(Read((value(Variable((value(Id r))(position((start_p(""4 58 70))(end_p(""4 58 71)))))()))(position((start_p(""4 58 70))(end_p(""4 58 71)))))))(position((start_p(""4 58 69))(end_p(""4 58 71)))))))(position((start_p(""4 58 69))(end_p(""4 58 71)))))((value(Variable((value(Id i))(position((start_p(""4 58 74))(end_p(""4 58 75)))))()))(position((start_p(""4 58 74))(end_p(""4 58 75)))))))(position((start_p(""4 58 69))(end_p(""4 58 75)))))))(position((start_p(""4 58 64))(end_p(""4 58 75)))))))(position((start_p(""3 30 34))(end_p(""5 76 81)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""6 83 87))(end_p(""6 83 99)))))()))(position((start_p(""6 83 87))(end_p(""6 83 99)))))((value(Literal((value(LString"This test is "))(position((start_p(""6 83 115))(end_p(""6 83 116)))))))(position((start_p(""6 83 100))(end_p(""6 83 117)))))))(position((start_p(""6 83 87))(end_p(""6 83 117)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""7 119 123))(end_p(""7 119 135)))))()))(position((start_p(""7 119 123))(end_p(""7 119 135)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""7 119 144))(end_p(""7 119 146)))))()))(position((start_p(""7 119 144))(end_p(""7 119 146)))))((value(Read((value(Variable((value(Id r))(position((start_p(""7 119 142))(end_p(""7 119 143)))))()))(position((start_p(""7 119 142))(end_p(""7 119 143)))))))(position((start_p(""7 119 141))(end_p(""7 119 143)))))))(position((start_p(""7 119 141))(end_p(""7 119 143)))))((value(Literal((value(LInt 120))(position((start_p(""7 119 147))(end_p(""7 119 150)))))))(position((start_p(""7 119 147))(end_p(""7 119 150)))))))(position((start_p(""7 119 140))(end_p(""7 119 151)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""7 119 165))(end_p(""7 119 166)))))))(position((start_p(""7 119 165))(end_p(""7 119 166)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""7 119 182))(end_p(""7 119 183)))))))(position((start_p(""7 119 182))(end_p(""7 119 183)))))))(position((start_p(""7 119 136))(end_p(""7 119 186)))))))(position((start_p(""7 119 123))(end_p(""7 119 186))))))))(position((start_p(""6 83 87))(end_p(""7 119 186))))))))(position((start_p(""3 30 34))(end_p(""7 119 186)))))))(position((start_p(""2 11 15))(end_p(""7 119 186)))))))))(position((start_p(""1 0 0))(end_p(""7 119 186)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/62-for-01.eval.hopix.human-readable b/flap/tests/02-Interpreter/62-for-01.eval.hopix.human-readable new file mode 100644 index 0000000..9e77616 --- /dev/null +++ b/flap/tests/02-Interpreter/62-for-01.eval.hopix.human-readable @@ -0,0 +1,7 @@ +let test = + let r = ref 1; + for i from (1) to (5) { + r := !r * i + }; + print_string ("This test is "); + print_string (if (!r =? 120) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/62-for-01.expected b/flap/tests/02-Interpreter/62-for-01.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/62-for-01.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/63-for-02.eval.hopix b/flap/tests/02-Interpreter/63-for-02.eval.hopix new file mode 100644 index 0000000..12175e4 --- /dev/null +++ b/flap/tests/02-Interpreter/63-for-02.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id r))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 1))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""3 30 38))(end_p(""3 30 39)))))((value(Literal((value(LInt 1))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))((value(Literal((value(LInt 5))(position((start_p(""3 30 53))(end_p(""3 30 54)))))))(position((start_p(""3 30 53))(end_p(""3 30 54)))))((value(Sequence(((value(For((value(Id j))(position((start_p(""4 58 68))(end_p(""4 58 69)))))((value(Literal((value(LInt 1))(position((start_p(""4 58 76))(end_p(""4 58 77)))))))(position((start_p(""4 58 76))(end_p(""4 58 77)))))((value(Literal((value(LInt 5))(position((start_p(""4 58 83))(end_p(""4 58 84)))))))(position((start_p(""4 58 83))(end_p(""4 58 84)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""5 88 96))(end_p(""5 88 97)))))()))(position((start_p(""5 88 96))(end_p(""5 88 97)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""5 88 104))(end_p(""5 88 105)))))()))(position((start_p(""5 88 104))(end_p(""5 88 105)))))((value(Read((value(Variable((value(Id r))(position((start_p(""5 88 102))(end_p(""5 88 103)))))()))(position((start_p(""5 88 102))(end_p(""5 88 103)))))))(position((start_p(""5 88 101))(end_p(""5 88 103)))))))(position((start_p(""5 88 101))(end_p(""5 88 103)))))((value(Variable((value(Id j))(position((start_p(""5 88 106))(end_p(""5 88 107)))))()))(position((start_p(""5 88 106))(end_p(""5 88 107)))))))(position((start_p(""5 88 101))(end_p(""5 88 107)))))))(position((start_p(""5 88 96))(end_p(""5 88 107)))))))(position((start_p(""4 58 64))(end_p(""6 108 115)))))((value(Sequence(((value(Assign((value(Variable((value(Id r))(position((start_p(""7 117 123))(end_p(""7 117 124)))))()))(position((start_p(""7 117 123))(end_p(""7 117 124)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""7 117 131))(end_p(""7 117 132)))))()))(position((start_p(""7 117 131))(end_p(""7 117 132)))))((value(Read((value(Variable((value(Id r))(position((start_p(""7 117 129))(end_p(""7 117 130)))))()))(position((start_p(""7 117 129))(end_p(""7 117 130)))))))(position((start_p(""7 117 128))(end_p(""7 117 130)))))))(position((start_p(""7 117 128))(end_p(""7 117 130)))))((value(Variable((value(Id i))(position((start_p(""7 117 133))(end_p(""7 117 134)))))()))(position((start_p(""7 117 133))(end_p(""7 117 134)))))))(position((start_p(""7 117 128))(end_p(""7 117 134)))))))(position((start_p(""7 117 123))(end_p(""7 117 134)))))((value(For((value(Id j))(position((start_p(""8 136 146))(end_p(""8 136 147)))))((value(Literal((value(LInt 1))(position((start_p(""8 136 154))(end_p(""8 136 155)))))))(position((start_p(""8 136 154))(end_p(""8 136 155)))))((value(Literal((value(LInt 5))(position((start_p(""8 136 161))(end_p(""8 136 162)))))))(position((start_p(""8 136 161))(end_p(""8 136 162)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""9 166 174))(end_p(""9 166 175)))))()))(position((start_p(""9 166 174))(end_p(""9 166 175)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""9 166 182))(end_p(""9 166 183)))))()))(position((start_p(""9 166 182))(end_p(""9 166 183)))))((value(Read((value(Variable((value(Id r))(position((start_p(""9 166 180))(end_p(""9 166 181)))))()))(position((start_p(""9 166 180))(end_p(""9 166 181)))))))(position((start_p(""9 166 179))(end_p(""9 166 181)))))))(position((start_p(""9 166 179))(end_p(""9 166 181)))))((value(Variable((value(Id j))(position((start_p(""9 166 184))(end_p(""9 166 185)))))()))(position((start_p(""9 166 184))(end_p(""9 166 185)))))))(position((start_p(""9 166 179))(end_p(""9 166 185)))))))(position((start_p(""9 166 174))(end_p(""9 166 185)))))))(position((start_p(""8 136 142))(end_p(""10 186 193))))))))(position((start_p(""7 117 123))(end_p(""10 186 193))))))))(position((start_p(""4 58 64))(end_p(""10 186 193)))))))(position((start_p(""3 30 34))(end_p(""11 194 199)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""12 201 205))(end_p(""12 201 217)))))()))(position((start_p(""12 201 205))(end_p(""12 201 217)))))((value(Literal((value(LString"This test is "))(position((start_p(""12 201 233))(end_p(""12 201 234)))))))(position((start_p(""12 201 218))(end_p(""12 201 235)))))))(position((start_p(""12 201 205))(end_p(""12 201 235)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""13 237 241))(end_p(""13 237 253)))))()))(position((start_p(""13 237 241))(end_p(""13 237 253)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""13 237 262))(end_p(""13 237 264)))))()))(position((start_p(""13 237 262))(end_p(""13 237 264)))))((value(Read((value(Variable((value(Id r))(position((start_p(""13 237 260))(end_p(""13 237 261)))))()))(position((start_p(""13 237 260))(end_p(""13 237 261)))))))(position((start_p(""13 237 259))(end_p(""13 237 261)))))))(position((start_p(""13 237 259))(end_p(""13 237 261)))))((value(Literal((value(LInt 120))(position((start_p(""13 237 265))(end_p(""13 237 268)))))))(position((start_p(""13 237 265))(end_p(""13 237 268)))))))(position((start_p(""13 237 258))(end_p(""13 237 269)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""13 237 283))(end_p(""13 237 284)))))))(position((start_p(""13 237 283))(end_p(""13 237 284)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""13 237 300))(end_p(""13 237 301)))))))(position((start_p(""13 237 300))(end_p(""13 237 301)))))))(position((start_p(""13 237 254))(end_p(""13 237 304)))))))(position((start_p(""13 237 241))(end_p(""13 237 304))))))))(position((start_p(""12 201 205))(end_p(""13 237 304))))))))(position((start_p(""3 30 34))(end_p(""13 237 304)))))))(position((start_p(""2 11 15))(end_p(""13 237 304)))))))))(position((start_p(""1 0 0))(end_p(""13 237 304)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/63-for-02.eval.hopix.human-readable b/flap/tests/02-Interpreter/63-for-02.eval.hopix.human-readable new file mode 100644 index 0000000..607237d --- /dev/null +++ b/flap/tests/02-Interpreter/63-for-02.eval.hopix.human-readable @@ -0,0 +1,13 @@ +let test = + let r = ref 1; + for i from (1) to (5) { + for j from (1) to (5) { + r := !r * j + }; + r := !r * i; + for j from (1) to (5) { + r := !r / j + } + }; + print_string ("This test is "); + print_string (if (!r =? 120) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/63-for-02.expected b/flap/tests/02-Interpreter/63-for-02.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/63-for-02.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/64-for-03.eval.hopix b/flap/tests/02-Interpreter/64-for-03.eval.hopix new file mode 100644 index 0000000..3529f63 --- /dev/null +++ b/flap/tests/02-Interpreter/64-for-03.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id r))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 1))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""3 30 38))(end_p(""3 30 39)))))((value(Literal((value(LInt 1))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))((value(Literal((value(LInt 5))(position((start_p(""3 30 53))(end_p(""3 30 54)))))))(position((start_p(""3 30 53))(end_p(""3 30 54)))))((value(Sequence(((value(For((value(Id i))(position((start_p(""4 58 68))(end_p(""4 58 69)))))((value(Literal((value(LInt 1))(position((start_p(""4 58 76))(end_p(""4 58 77)))))))(position((start_p(""4 58 76))(end_p(""4 58 77)))))((value(Literal((value(LInt 5))(position((start_p(""4 58 83))(end_p(""4 58 84)))))))(position((start_p(""4 58 83))(end_p(""4 58 84)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""5 88 96))(end_p(""5 88 97)))))()))(position((start_p(""5 88 96))(end_p(""5 88 97)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""5 88 104))(end_p(""5 88 105)))))()))(position((start_p(""5 88 104))(end_p(""5 88 105)))))((value(Read((value(Variable((value(Id r))(position((start_p(""5 88 102))(end_p(""5 88 103)))))()))(position((start_p(""5 88 102))(end_p(""5 88 103)))))))(position((start_p(""5 88 101))(end_p(""5 88 103)))))))(position((start_p(""5 88 101))(end_p(""5 88 103)))))((value(Variable((value(Id i))(position((start_p(""5 88 106))(end_p(""5 88 107)))))()))(position((start_p(""5 88 106))(end_p(""5 88 107)))))))(position((start_p(""5 88 101))(end_p(""5 88 107)))))))(position((start_p(""5 88 96))(end_p(""5 88 107)))))))(position((start_p(""4 58 64))(end_p(""6 108 115)))))((value(Sequence(((value(Assign((value(Variable((value(Id r))(position((start_p(""7 117 123))(end_p(""7 117 124)))))()))(position((start_p(""7 117 123))(end_p(""7 117 124)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""7 117 131))(end_p(""7 117 132)))))()))(position((start_p(""7 117 131))(end_p(""7 117 132)))))((value(Read((value(Variable((value(Id r))(position((start_p(""7 117 129))(end_p(""7 117 130)))))()))(position((start_p(""7 117 129))(end_p(""7 117 130)))))))(position((start_p(""7 117 128))(end_p(""7 117 130)))))))(position((start_p(""7 117 128))(end_p(""7 117 130)))))((value(Variable((value(Id i))(position((start_p(""7 117 133))(end_p(""7 117 134)))))()))(position((start_p(""7 117 133))(end_p(""7 117 134)))))))(position((start_p(""7 117 128))(end_p(""7 117 134)))))))(position((start_p(""7 117 123))(end_p(""7 117 134)))))((value(For((value(Id i))(position((start_p(""8 136 146))(end_p(""8 136 147)))))((value(Literal((value(LInt 1))(position((start_p(""8 136 154))(end_p(""8 136 155)))))))(position((start_p(""8 136 154))(end_p(""8 136 155)))))((value(Literal((value(LInt 5))(position((start_p(""8 136 161))(end_p(""8 136 162)))))))(position((start_p(""8 136 161))(end_p(""8 136 162)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""9 166 174))(end_p(""9 166 175)))))()))(position((start_p(""9 166 174))(end_p(""9 166 175)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""9 166 182))(end_p(""9 166 183)))))()))(position((start_p(""9 166 182))(end_p(""9 166 183)))))((value(Read((value(Variable((value(Id r))(position((start_p(""9 166 180))(end_p(""9 166 181)))))()))(position((start_p(""9 166 180))(end_p(""9 166 181)))))))(position((start_p(""9 166 179))(end_p(""9 166 181)))))))(position((start_p(""9 166 179))(end_p(""9 166 181)))))((value(Variable((value(Id i))(position((start_p(""9 166 184))(end_p(""9 166 185)))))()))(position((start_p(""9 166 184))(end_p(""9 166 185)))))))(position((start_p(""9 166 179))(end_p(""9 166 185)))))))(position((start_p(""9 166 174))(end_p(""9 166 185)))))))(position((start_p(""8 136 142))(end_p(""10 186 193))))))))(position((start_p(""7 117 123))(end_p(""10 186 193))))))))(position((start_p(""4 58 64))(end_p(""10 186 193)))))))(position((start_p(""3 30 34))(end_p(""11 194 199)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""12 201 205))(end_p(""12 201 217)))))()))(position((start_p(""12 201 205))(end_p(""12 201 217)))))((value(Literal((value(LString"This test is "))(position((start_p(""12 201 233))(end_p(""12 201 234)))))))(position((start_p(""12 201 218))(end_p(""12 201 235)))))))(position((start_p(""12 201 205))(end_p(""12 201 235)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""13 237 241))(end_p(""13 237 253)))))()))(position((start_p(""13 237 241))(end_p(""13 237 253)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""13 237 262))(end_p(""13 237 264)))))()))(position((start_p(""13 237 262))(end_p(""13 237 264)))))((value(Read((value(Variable((value(Id r))(position((start_p(""13 237 260))(end_p(""13 237 261)))))()))(position((start_p(""13 237 260))(end_p(""13 237 261)))))))(position((start_p(""13 237 259))(end_p(""13 237 261)))))))(position((start_p(""13 237 259))(end_p(""13 237 261)))))((value(Literal((value(LInt 120))(position((start_p(""13 237 265))(end_p(""13 237 268)))))))(position((start_p(""13 237 265))(end_p(""13 237 268)))))))(position((start_p(""13 237 258))(end_p(""13 237 269)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""13 237 283))(end_p(""13 237 284)))))))(position((start_p(""13 237 283))(end_p(""13 237 284)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""13 237 300))(end_p(""13 237 301)))))))(position((start_p(""13 237 300))(end_p(""13 237 301)))))))(position((start_p(""13 237 254))(end_p(""13 237 304)))))))(position((start_p(""13 237 241))(end_p(""13 237 304))))))))(position((start_p(""12 201 205))(end_p(""13 237 304))))))))(position((start_p(""3 30 34))(end_p(""13 237 304)))))))(position((start_p(""2 11 15))(end_p(""13 237 304)))))))))(position((start_p(""1 0 0))(end_p(""13 237 304)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/64-for-03.eval.hopix.human-readable b/flap/tests/02-Interpreter/64-for-03.eval.hopix.human-readable new file mode 100644 index 0000000..46ca3d2 --- /dev/null +++ b/flap/tests/02-Interpreter/64-for-03.eval.hopix.human-readable @@ -0,0 +1,13 @@ +let test = + let r = ref 1; + for i from (1) to (5) { + for i from (1) to (5) { + r := !r * i + }; + r := !r * i; + for i from (1) to (5) { + r := !r / i + } + }; + print_string ("This test is "); + print_string (if (!r =? 120) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/64-for-03.expected b/flap/tests/02-Interpreter/64-for-03.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/64-for-03.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/65-for-04.eval.hopix b/flap/tests/02-Interpreter/65-for-04.eval.hopix new file mode 100644 index 0000000..610330e --- /dev/null +++ b/flap/tests/02-Interpreter/65-for-04.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()((value(Define(SimpleValue(((value(Id r))(position((start_p(""2 11 19))(end_p(""2 11 20)))))()((value(Ref((value(Literal((value(LInt 1))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 27))(end_p(""2 11 28)))))))(position((start_p(""2 11 23))(end_p(""2 11 28)))))))((value(Sequence(((value(For((value(Id i))(position((start_p(""3 30 38))(end_p(""3 30 39)))))((value(Literal((value(LInt 1))(position((start_p(""3 30 46))(end_p(""3 30 47)))))))(position((start_p(""3 30 46))(end_p(""3 30 47)))))((value(Literal((value(LInt 10))(position((start_p(""3 30 53))(end_p(""3 30 55)))))))(position((start_p(""3 30 53))(end_p(""3 30 55)))))((value(Sequence(((value(For((value(Id i))(position((start_p(""4 59 69))(end_p(""4 59 70)))))((value(Literal((value(LInt 1))(position((start_p(""4 59 77))(end_p(""4 59 78)))))))(position((start_p(""4 59 77))(end_p(""4 59 78)))))((value(Literal((value(LInt 5))(position((start_p(""4 59 84))(end_p(""4 59 85)))))))(position((start_p(""4 59 84))(end_p(""4 59 85)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""5 89 97))(end_p(""5 89 98)))))()))(position((start_p(""5 89 97))(end_p(""5 89 98)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""5 89 105))(end_p(""5 89 106)))))()))(position((start_p(""5 89 105))(end_p(""5 89 106)))))((value(Read((value(Variable((value(Id r))(position((start_p(""5 89 103))(end_p(""5 89 104)))))()))(position((start_p(""5 89 103))(end_p(""5 89 104)))))))(position((start_p(""5 89 102))(end_p(""5 89 104)))))))(position((start_p(""5 89 102))(end_p(""5 89 104)))))((value(Variable((value(Id i))(position((start_p(""5 89 107))(end_p(""5 89 108)))))()))(position((start_p(""5 89 107))(end_p(""5 89 108)))))))(position((start_p(""5 89 102))(end_p(""5 89 108)))))))(position((start_p(""5 89 97))(end_p(""5 89 108)))))))(position((start_p(""4 59 65))(end_p(""6 109 116)))))((value(Sequence(((value(Assign((value(Variable((value(Id r))(position((start_p(""7 118 124))(end_p(""7 118 125)))))()))(position((start_p(""7 118 124))(end_p(""7 118 125)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""7 118 132))(end_p(""7 118 133)))))()))(position((start_p(""7 118 132))(end_p(""7 118 133)))))((value(Read((value(Variable((value(Id r))(position((start_p(""7 118 130))(end_p(""7 118 131)))))()))(position((start_p(""7 118 130))(end_p(""7 118 131)))))))(position((start_p(""7 118 129))(end_p(""7 118 131)))))))(position((start_p(""7 118 129))(end_p(""7 118 131)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""7 118 137))(end_p(""7 118 138)))))()))(position((start_p(""7 118 137))(end_p(""7 118 138)))))((value(Literal((value(LInt 1))(position((start_p(""7 118 135))(end_p(""7 118 136)))))))(position((start_p(""7 118 135))(end_p(""7 118 136)))))))(position((start_p(""7 118 135))(end_p(""7 118 136)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""7 118 141))(end_p(""7 118 142)))))()))(position((start_p(""7 118 141))(end_p(""7 118 142)))))((value(Variable((value(Id i))(position((start_p(""7 118 139))(end_p(""7 118 140)))))()))(position((start_p(""7 118 139))(end_p(""7 118 140)))))))(position((start_p(""7 118 139))(end_p(""7 118 140)))))((value(Literal((value(LInt 10))(position((start_p(""7 118 143))(end_p(""7 118 145)))))))(position((start_p(""7 118 143))(end_p(""7 118 145)))))))(position((start_p(""7 118 139))(end_p(""7 118 145)))))))(position((start_p(""7 118 134))(end_p(""7 118 146)))))))(position((start_p(""7 118 129))(end_p(""7 118 146)))))))(position((start_p(""7 118 124))(end_p(""7 118 146)))))((value(For((value(Id i))(position((start_p(""8 148 158))(end_p(""8 148 159)))))((value(Literal((value(LInt 1))(position((start_p(""8 148 166))(end_p(""8 148 167)))))))(position((start_p(""8 148 166))(end_p(""8 148 167)))))((value(Literal((value(LInt 5))(position((start_p(""8 148 173))(end_p(""8 148 174)))))))(position((start_p(""8 148 173))(end_p(""8 148 174)))))((value(Assign((value(Variable((value(Id r))(position((start_p(""9 178 186))(end_p(""9 178 187)))))()))(position((start_p(""9 178 186))(end_p(""9 178 187)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""9 178 194))(end_p(""9 178 195)))))()))(position((start_p(""9 178 194))(end_p(""9 178 195)))))((value(Read((value(Variable((value(Id r))(position((start_p(""9 178 192))(end_p(""9 178 193)))))()))(position((start_p(""9 178 192))(end_p(""9 178 193)))))))(position((start_p(""9 178 191))(end_p(""9 178 193)))))))(position((start_p(""9 178 191))(end_p(""9 178 193)))))((value(Variable((value(Id i))(position((start_p(""9 178 196))(end_p(""9 178 197)))))()))(position((start_p(""9 178 196))(end_p(""9 178 197)))))))(position((start_p(""9 178 191))(end_p(""9 178 197)))))))(position((start_p(""9 178 186))(end_p(""9 178 197)))))))(position((start_p(""8 148 154))(end_p(""10 198 205))))))))(position((start_p(""7 118 124))(end_p(""10 198 205))))))))(position((start_p(""4 59 65))(end_p(""10 198 205)))))))(position((start_p(""3 30 34))(end_p(""11 206 211)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""12 213 217))(end_p(""12 213 229)))))()))(position((start_p(""12 213 217))(end_p(""12 213 229)))))((value(Literal((value(LString"This test is "))(position((start_p(""12 213 245))(end_p(""12 213 246)))))))(position((start_p(""12 213 230))(end_p(""12 213 247)))))))(position((start_p(""12 213 217))(end_p(""12 213 247)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""13 249 253))(end_p(""13 249 265)))))()))(position((start_p(""13 249 253))(end_p(""13 249 265)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""13 249 274))(end_p(""13 249 276)))))()))(position((start_p(""13 249 274))(end_p(""13 249 276)))))((value(Read((value(Variable((value(Id r))(position((start_p(""13 249 272))(end_p(""13 249 273)))))()))(position((start_p(""13 249 272))(end_p(""13 249 273)))))))(position((start_p(""13 249 271))(end_p(""13 249 273)))))))(position((start_p(""13 249 271))(end_p(""13 249 273)))))((value(Literal((value(LInt 2))(position((start_p(""13 249 277))(end_p(""13 249 278)))))))(position((start_p(""13 249 277))(end_p(""13 249 278)))))))(position((start_p(""13 249 270))(end_p(""13 249 279)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""13 249 293))(end_p(""13 249 294)))))))(position((start_p(""13 249 293))(end_p(""13 249 294)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""13 249 310))(end_p(""13 249 311)))))))(position((start_p(""13 249 310))(end_p(""13 249 311)))))))(position((start_p(""13 249 266))(end_p(""13 249 314)))))))(position((start_p(""13 249 253))(end_p(""13 249 314))))))))(position((start_p(""12 213 217))(end_p(""13 249 314))))))))(position((start_p(""3 30 34))(end_p(""13 249 314)))))))(position((start_p(""2 11 15))(end_p(""13 249 314)))))))))(position((start_p(""1 0 0))(end_p(""13 249 314)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/65-for-04.eval.hopix.human-readable b/flap/tests/02-Interpreter/65-for-04.eval.hopix.human-readable new file mode 100644 index 0000000..4beac80 --- /dev/null +++ b/flap/tests/02-Interpreter/65-for-04.eval.hopix.human-readable @@ -0,0 +1,13 @@ +let test = + let r = ref 1; + for i from (1) to (10) { + for i from (1) to (5) { + r := !r * i + }; + r := !r * (1 + i / 10); + for i from (1) to (5) { + r := !r / i + } + }; + print_string ("This test is "); + print_string (if (!r =? 2) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/65-for-04.expected b/flap/tests/02-Interpreter/65-for-04.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/65-for-04.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/66-concat.eval.hopix b/flap/tests/02-Interpreter/66-concat.eval.hopix new file mode 100644 index 0000000..a924fe5 --- /dev/null +++ b/flap/tests/02-Interpreter/66-concat.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""1 0 4))(end_p(""1 0 10)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""1 0 12))(end_p(""1 0 14)))))))(position((start_p(""1 0 12))(end_p(""1 0 14)))))((value(PVariable((value(Id l2))(position((start_p(""1 0 16))(end_p(""1 0 18)))))))(position((start_p(""1 0 16))(end_p(""1 0 18))))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""2 22 31))(end_p(""2 22 33)))))()))(position((start_p(""2 22 31))(end_p(""2 22 33)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""3 37 41))(end_p(""3 37 42)))))()()))(position((start_p(""3 37 41))(end_p(""3 37 42)))))((value(Variable((value(Id l2))(position((start_p(""3 37 46))(end_p(""3 37 48)))))()))(position((start_p(""3 37 46))(end_p(""3 37 48)))))))(position((start_p(""3 37 41))(end_p(""3 37 48)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""4 49 53))(end_p(""4 49 54)))))()(((value(PVariable((value(Id x))(position((start_p(""4 49 56))(end_p(""4 49 57)))))))(position((start_p(""4 49 56))(end_p(""4 49 57)))))((value(PVariable((value(Id xs))(position((start_p(""4 49 59))(end_p(""4 49 61)))))))(position((start_p(""4 49 59))(end_p(""4 49 61))))))))(position((start_p(""4 49 53))(end_p(""4 49 62)))))((value(Tagged((value(KId C))(position((start_p(""4 49 66))(end_p(""4 49 67)))))()(((value(Variable((value(Id x))(position((start_p(""4 49 69))(end_p(""4 49 70)))))()))(position((start_p(""4 49 69))(end_p(""4 49 70)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""4 49 72))(end_p(""4 49 78)))))()))(position((start_p(""4 49 72))(end_p(""4 49 78)))))((value(Tuple(((value(Variable((value(Id xs))(position((start_p(""4 49 80))(end_p(""4 49 82)))))()))(position((start_p(""4 49 80))(end_p(""4 49 82)))))((value(Variable((value(Id l2))(position((start_p(""4 49 84))(end_p(""4 49 86)))))()))(position((start_p(""4 49 84))(end_p(""4 49 86))))))))(position((start_p(""4 49 79))(end_p(""4 49 87)))))))(position((start_p(""4 49 72))(end_p(""4 49 87))))))))(position((start_p(""4 49 66))(end_p(""4 49 88)))))))(position((start_p(""4 49 53))(end_p(""4 49 88))))))))(position((start_p(""2 22 24))(end_p(""5 89 92)))))))))))(position((start_p(""1 0 0))(end_p(""5 89 92)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""7 94 98))(end_p(""7 94 99)))))()((value(Tagged((value(KId C))(position((start_p(""7 94 102))(end_p(""7 94 103)))))()(((value(Literal((value(LInt 1))(position((start_p(""7 94 105))(end_p(""7 94 106)))))))(position((start_p(""7 94 105))(end_p(""7 94 106)))))((value(Tagged((value(KId C))(position((start_p(""7 94 108))(end_p(""7 94 109)))))()(((value(Literal((value(LInt 2))(position((start_p(""7 94 111))(end_p(""7 94 112)))))))(position((start_p(""7 94 111))(end_p(""7 94 112)))))((value(Tagged((value(KId N))(position((start_p(""7 94 114))(end_p(""7 94 115)))))()()))(position((start_p(""7 94 114))(end_p(""7 94 115))))))))(position((start_p(""7 94 108))(end_p(""7 94 116))))))))(position((start_p(""7 94 102))(end_p(""7 94 117)))))))))(position((start_p(""7 94 94))(end_p(""7 94 117)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""8 118 122))(end_p(""8 118 123)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 118 126))(end_p(""8 118 132)))))()))(position((start_p(""8 118 126))(end_p(""8 118 132)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""8 118 134))(end_p(""8 118 135)))))()))(position((start_p(""8 118 134))(end_p(""8 118 135)))))((value(Variable((value(Id l))(position((start_p(""8 118 137))(end_p(""8 118 138)))))()))(position((start_p(""8 118 137))(end_p(""8 118 138))))))))(position((start_p(""8 118 133))(end_p(""8 118 139)))))))(position((start_p(""8 118 126))(end_p(""8 118 139)))))))))(position((start_p(""8 118 118))(end_p(""8 118 139)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""9 140 144))(end_p(""9 140 145)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""9 140 148))(end_p(""9 140 154)))))()))(position((start_p(""9 140 148))(end_p(""9 140 154)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""9 140 156))(end_p(""9 140 157)))))()))(position((start_p(""9 140 156))(end_p(""9 140 157)))))((value(Variable((value(Id l))(position((start_p(""9 140 159))(end_p(""9 140 160)))))()))(position((start_p(""9 140 159))(end_p(""9 140 160))))))))(position((start_p(""9 140 155))(end_p(""9 140 161)))))))(position((start_p(""9 140 148))(end_p(""9 140 161)))))))))(position((start_p(""9 140 140))(end_p(""9 140 161)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""10 162 166))(end_p(""10 162 167)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""10 162 170))(end_p(""10 162 176)))))()))(position((start_p(""10 162 170))(end_p(""10 162 176)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""10 162 178))(end_p(""10 162 179)))))()))(position((start_p(""10 162 178))(end_p(""10 162 179)))))((value(Variable((value(Id l))(position((start_p(""10 162 181))(end_p(""10 162 182)))))()))(position((start_p(""10 162 181))(end_p(""10 162 182))))))))(position((start_p(""10 162 177))(end_p(""10 162 183)))))))(position((start_p(""10 162 170))(end_p(""10 162 183)))))))))(position((start_p(""10 162 162))(end_p(""10 162 183)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""11 184 188))(end_p(""11 184 189)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""11 184 192))(end_p(""11 184 198)))))()))(position((start_p(""11 184 192))(end_p(""11 184 198)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""11 184 200))(end_p(""11 184 201)))))()))(position((start_p(""11 184 200))(end_p(""11 184 201)))))((value(Variable((value(Id l))(position((start_p(""11 184 203))(end_p(""11 184 204)))))()))(position((start_p(""11 184 203))(end_p(""11 184 204))))))))(position((start_p(""11 184 199))(end_p(""11 184 205)))))))(position((start_p(""11 184 192))(end_p(""11 184 205)))))))))(position((start_p(""11 184 184))(end_p(""11 184 205)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""12 206 210))(end_p(""12 206 211)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""12 206 214))(end_p(""12 206 220)))))()))(position((start_p(""12 206 214))(end_p(""12 206 220)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""12 206 222))(end_p(""12 206 223)))))()))(position((start_p(""12 206 222))(end_p(""12 206 223)))))((value(Variable((value(Id l))(position((start_p(""12 206 225))(end_p(""12 206 226)))))()))(position((start_p(""12 206 225))(end_p(""12 206 226))))))))(position((start_p(""12 206 221))(end_p(""12 206 227)))))))(position((start_p(""12 206 214))(end_p(""12 206 227)))))))))(position((start_p(""12 206 206))(end_p(""12 206 227)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""13 228 232))(end_p(""13 228 233)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""13 228 236))(end_p(""13 228 242)))))()))(position((start_p(""13 228 236))(end_p(""13 228 242)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""13 228 244))(end_p(""13 228 245)))))()))(position((start_p(""13 228 244))(end_p(""13 228 245)))))((value(Variable((value(Id l))(position((start_p(""13 228 247))(end_p(""13 228 248)))))()))(position((start_p(""13 228 247))(end_p(""13 228 248))))))))(position((start_p(""13 228 243))(end_p(""13 228 249)))))))(position((start_p(""13 228 236))(end_p(""13 228 249)))))))))(position((start_p(""13 228 228))(end_p(""13 228 249)))))((value(DefineValue(RecFunctions((((value(Id len))(position((start_p(""15 251 255))(end_p(""15 251 258)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""15 251 260))(end_p(""15 251 261)))))))(position((start_p(""15 251 259))(end_p(""15 251 262)))))((value(Case((value(Variable((value(Id l))(position((start_p(""16 265 274))(end_p(""16 265 275)))))()))(position((start_p(""16 265 274))(end_p(""16 265 275)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""17 279 283))(end_p(""17 279 284)))))()()))(position((start_p(""17 279 283))(end_p(""17 279 284)))))((value(Literal((value(LInt 0))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 283))(end_p(""17 279 289)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""18 290 294))(end_p(""18 290 295)))))()(((value(PVariable((value(Id x))(position((start_p(""18 290 297))(end_p(""18 290 298)))))))(position((start_p(""18 290 297))(end_p(""18 290 298)))))((value(PVariable((value(Id xs))(position((start_p(""18 290 300))(end_p(""18 290 302)))))))(position((start_p(""18 290 300))(end_p(""18 290 302))))))))(position((start_p(""18 290 294))(end_p(""18 290 303)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""18 290 309))(end_p(""18 290 310)))))()))(position((start_p(""18 290 309))(end_p(""18 290 310)))))((value(Literal((value(LInt 1))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))((value(Apply((value(Variable((value(Id len))(position((start_p(""18 290 311))(end_p(""18 290 314)))))()))(position((start_p(""18 290 311))(end_p(""18 290 314)))))((value(Variable((value(Id xs))(position((start_p(""18 290 316))(end_p(""18 290 318)))))()))(position((start_p(""18 290 315))(end_p(""18 290 319)))))))(position((start_p(""18 290 311))(end_p(""18 290 319)))))))(position((start_p(""18 290 307))(end_p(""18 290 319)))))))(position((start_p(""18 290 294))(end_p(""18 290 319))))))))(position((start_p(""16 265 267))(end_p(""19 320 323)))))))))))(position((start_p(""15 251 251))(end_p(""19 320 323)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""21 325 329))(end_p(""21 325 333)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""22 336 338))(end_p(""22 336 347)))))()))(position((start_p(""22 336 338))(end_p(""22 336 347)))))((value(Apply((value(Variable((value(Id len))(position((start_p(""22 336 349))(end_p(""22 336 352)))))()))(position((start_p(""22 336 349))(end_p(""22 336 352)))))((value(Variable((value(Id l))(position((start_p(""22 336 354))(end_p(""22 336 355)))))()))(position((start_p(""22 336 353))(end_p(""22 336 356)))))))(position((start_p(""22 336 348))(end_p(""22 336 357)))))))(position((start_p(""22 336 338))(end_p(""22 336 357)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""23 359 361))(end_p(""23 359 373)))))()))(position((start_p(""23 359 361))(end_p(""23 359 373)))))((value(Literal((value(LString"\n"))(position((start_p(""23 359 378))(end_p(""23 359 379)))))))(position((start_p(""23 359 374))(end_p(""23 359 380)))))))(position((start_p(""23 359 361))(end_p(""23 359 380))))))))(position((start_p(""22 336 338))(end_p(""23 359 380)))))))))(position((start_p(""21 325 325))(end_p(""23 359 380)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/66-concat.eval.hopix.human-readable b/flap/tests/02-Interpreter/66-concat.eval.hopix.human-readable new file mode 100644 index 0000000..1939a5e --- /dev/null +++ b/flap/tests/02-Interpreter/66-concat.eval.hopix.human-readable @@ -0,0 +1,25 @@ +fun concat (l1, l2) = + match (l1) { + | N -> l2 + | C (x, xs) -> C (x, concat (xs, l2)) + } + +let l = C (1, C (2, N)) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) + +fun len (l) = + match (l) { + | N -> 0 + | C (x, xs) -> 1 + len (xs) + } + +let test = + print_int (len (l)); + print_string ("\n") + + diff --git a/flap/tests/02-Interpreter/66-concat.expected b/flap/tests/02-Interpreter/66-concat.expected new file mode 100644 index 0000000..a949a93 --- /dev/null +++ b/flap/tests/02-Interpreter/66-concat.expected @@ -0,0 +1 @@ +128 diff --git a/flap/tests/02-Interpreter/67-sorted.eval.hopix b/flap/tests/02-Interpreter/67-sorted.eval.hopix new file mode 100644 index 0000000..8e29b3b --- /dev/null +++ b/flap/tests/02-Interpreter/67-sorted.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""1 0 4))(end_p(""1 0 10)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""1 0 12))(end_p(""1 0 14)))))))(position((start_p(""1 0 12))(end_p(""1 0 14)))))((value(PVariable((value(Id l2))(position((start_p(""1 0 16))(end_p(""1 0 18)))))))(position((start_p(""1 0 16))(end_p(""1 0 18))))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""2 22 31))(end_p(""2 22 33)))))()))(position((start_p(""2 22 31))(end_p(""2 22 33)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""3 37 41))(end_p(""3 37 42)))))()()))(position((start_p(""3 37 41))(end_p(""3 37 42)))))((value(Variable((value(Id l2))(position((start_p(""3 37 46))(end_p(""3 37 48)))))()))(position((start_p(""3 37 46))(end_p(""3 37 48)))))))(position((start_p(""3 37 41))(end_p(""3 37 48)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""4 49 53))(end_p(""4 49 54)))))()(((value(PVariable((value(Id x))(position((start_p(""4 49 56))(end_p(""4 49 57)))))))(position((start_p(""4 49 56))(end_p(""4 49 57)))))((value(PVariable((value(Id xs))(position((start_p(""4 49 59))(end_p(""4 49 61)))))))(position((start_p(""4 49 59))(end_p(""4 49 61))))))))(position((start_p(""4 49 53))(end_p(""4 49 62)))))((value(Tagged((value(KId C))(position((start_p(""4 49 66))(end_p(""4 49 67)))))()(((value(Variable((value(Id x))(position((start_p(""4 49 69))(end_p(""4 49 70)))))()))(position((start_p(""4 49 69))(end_p(""4 49 70)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""4 49 72))(end_p(""4 49 78)))))()))(position((start_p(""4 49 72))(end_p(""4 49 78)))))((value(Tuple(((value(Variable((value(Id xs))(position((start_p(""4 49 80))(end_p(""4 49 82)))))()))(position((start_p(""4 49 80))(end_p(""4 49 82)))))((value(Variable((value(Id l2))(position((start_p(""4 49 84))(end_p(""4 49 86)))))()))(position((start_p(""4 49 84))(end_p(""4 49 86))))))))(position((start_p(""4 49 79))(end_p(""4 49 87)))))))(position((start_p(""4 49 72))(end_p(""4 49 87))))))))(position((start_p(""4 49 66))(end_p(""4 49 88)))))))(position((start_p(""4 49 53))(end_p(""4 49 88))))))))(position((start_p(""2 22 24))(end_p(""5 89 92)))))))))))(position((start_p(""1 0 0))(end_p(""5 89 92)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""7 94 98))(end_p(""7 94 99)))))()((value(Tagged((value(KId C))(position((start_p(""7 94 102))(end_p(""7 94 103)))))()(((value(Literal((value(LInt 1))(position((start_p(""7 94 105))(end_p(""7 94 106)))))))(position((start_p(""7 94 105))(end_p(""7 94 106)))))((value(Tagged((value(KId C))(position((start_p(""7 94 108))(end_p(""7 94 109)))))()(((value(Literal((value(LInt 2))(position((start_p(""7 94 111))(end_p(""7 94 112)))))))(position((start_p(""7 94 111))(end_p(""7 94 112)))))((value(Tagged((value(KId N))(position((start_p(""7 94 114))(end_p(""7 94 115)))))()()))(position((start_p(""7 94 114))(end_p(""7 94 115))))))))(position((start_p(""7 94 108))(end_p(""7 94 116))))))))(position((start_p(""7 94 102))(end_p(""7 94 117)))))))))(position((start_p(""7 94 94))(end_p(""7 94 117)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""8 118 122))(end_p(""8 118 123)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 118 126))(end_p(""8 118 132)))))()))(position((start_p(""8 118 126))(end_p(""8 118 132)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""8 118 134))(end_p(""8 118 135)))))()))(position((start_p(""8 118 134))(end_p(""8 118 135)))))((value(Variable((value(Id l))(position((start_p(""8 118 137))(end_p(""8 118 138)))))()))(position((start_p(""8 118 137))(end_p(""8 118 138))))))))(position((start_p(""8 118 133))(end_p(""8 118 139)))))))(position((start_p(""8 118 126))(end_p(""8 118 139)))))))))(position((start_p(""8 118 118))(end_p(""8 118 139)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""9 140 144))(end_p(""9 140 145)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""9 140 148))(end_p(""9 140 154)))))()))(position((start_p(""9 140 148))(end_p(""9 140 154)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""9 140 156))(end_p(""9 140 157)))))()))(position((start_p(""9 140 156))(end_p(""9 140 157)))))((value(Variable((value(Id l))(position((start_p(""9 140 159))(end_p(""9 140 160)))))()))(position((start_p(""9 140 159))(end_p(""9 140 160))))))))(position((start_p(""9 140 155))(end_p(""9 140 161)))))))(position((start_p(""9 140 148))(end_p(""9 140 161)))))))))(position((start_p(""9 140 140))(end_p(""9 140 161)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""10 162 166))(end_p(""10 162 167)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""10 162 170))(end_p(""10 162 176)))))()))(position((start_p(""10 162 170))(end_p(""10 162 176)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""10 162 178))(end_p(""10 162 179)))))()))(position((start_p(""10 162 178))(end_p(""10 162 179)))))((value(Variable((value(Id l))(position((start_p(""10 162 181))(end_p(""10 162 182)))))()))(position((start_p(""10 162 181))(end_p(""10 162 182))))))))(position((start_p(""10 162 177))(end_p(""10 162 183)))))))(position((start_p(""10 162 170))(end_p(""10 162 183)))))))))(position((start_p(""10 162 162))(end_p(""10 162 183)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""11 184 188))(end_p(""11 184 189)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""11 184 192))(end_p(""11 184 198)))))()))(position((start_p(""11 184 192))(end_p(""11 184 198)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""11 184 200))(end_p(""11 184 201)))))()))(position((start_p(""11 184 200))(end_p(""11 184 201)))))((value(Variable((value(Id l))(position((start_p(""11 184 203))(end_p(""11 184 204)))))()))(position((start_p(""11 184 203))(end_p(""11 184 204))))))))(position((start_p(""11 184 199))(end_p(""11 184 205)))))))(position((start_p(""11 184 192))(end_p(""11 184 205)))))))))(position((start_p(""11 184 184))(end_p(""11 184 205)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""12 206 210))(end_p(""12 206 211)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""12 206 214))(end_p(""12 206 220)))))()))(position((start_p(""12 206 214))(end_p(""12 206 220)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""12 206 222))(end_p(""12 206 223)))))()))(position((start_p(""12 206 222))(end_p(""12 206 223)))))((value(Variable((value(Id l))(position((start_p(""12 206 225))(end_p(""12 206 226)))))()))(position((start_p(""12 206 225))(end_p(""12 206 226))))))))(position((start_p(""12 206 221))(end_p(""12 206 227)))))))(position((start_p(""12 206 214))(end_p(""12 206 227)))))))))(position((start_p(""12 206 206))(end_p(""12 206 227)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""13 228 232))(end_p(""13 228 233)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""13 228 236))(end_p(""13 228 242)))))()))(position((start_p(""13 228 236))(end_p(""13 228 242)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""13 228 244))(end_p(""13 228 245)))))()))(position((start_p(""13 228 244))(end_p(""13 228 245)))))((value(Variable((value(Id l))(position((start_p(""13 228 247))(end_p(""13 228 248)))))()))(position((start_p(""13 228 247))(end_p(""13 228 248))))))))(position((start_p(""13 228 243))(end_p(""13 228 249)))))))(position((start_p(""13 228 236))(end_p(""13 228 249)))))))))(position((start_p(""13 228 228))(end_p(""13 228 249)))))((value(DefineValue(RecFunctions((((value(Id len))(position((start_p(""15 251 255))(end_p(""15 251 258)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""15 251 260))(end_p(""15 251 261)))))))(position((start_p(""15 251 259))(end_p(""15 251 262)))))((value(Case((value(Variable((value(Id l))(position((start_p(""16 265 274))(end_p(""16 265 275)))))()))(position((start_p(""16 265 274))(end_p(""16 265 275)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""17 279 283))(end_p(""17 279 284)))))()()))(position((start_p(""17 279 283))(end_p(""17 279 284)))))((value(Literal((value(LInt 0))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 283))(end_p(""17 279 289)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""18 290 294))(end_p(""18 290 295)))))()(((value(PVariable((value(Id x))(position((start_p(""18 290 297))(end_p(""18 290 298)))))))(position((start_p(""18 290 297))(end_p(""18 290 298)))))((value(PVariable((value(Id xs))(position((start_p(""18 290 300))(end_p(""18 290 302)))))))(position((start_p(""18 290 300))(end_p(""18 290 302))))))))(position((start_p(""18 290 294))(end_p(""18 290 303)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""18 290 309))(end_p(""18 290 310)))))()))(position((start_p(""18 290 309))(end_p(""18 290 310)))))((value(Literal((value(LInt 1))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))((value(Apply((value(Variable((value(Id len))(position((start_p(""18 290 311))(end_p(""18 290 314)))))()))(position((start_p(""18 290 311))(end_p(""18 290 314)))))((value(Variable((value(Id xs))(position((start_p(""18 290 316))(end_p(""18 290 318)))))()))(position((start_p(""18 290 315))(end_p(""18 290 319)))))))(position((start_p(""18 290 311))(end_p(""18 290 319)))))))(position((start_p(""18 290 307))(end_p(""18 290 319)))))))(position((start_p(""18 290 294))(end_p(""18 290 319))))))))(position((start_p(""16 265 267))(end_p(""19 320 323)))))))))))(position((start_p(""15 251 251))(end_p(""19 320 323)))))((value(DefineValue(RecFunctions((((value(Id sorted))(position((start_p(""21 325 329))(end_p(""21 325 335)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""21 325 337))(end_p(""21 325 338)))))))(position((start_p(""21 325 336))(end_p(""21 325 339)))))((value(Case((value(Variable((value(Id l))(position((start_p(""22 342 351))(end_p(""22 342 352)))))()))(position((start_p(""22 342 351))(end_p(""22 342 352)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId N))(position((start_p(""23 356 360))(end_p(""23 356 361)))))()()))(position((start_p(""23 356 360))(end_p(""23 356 361)))))((value(PTaggedValue((value(KId C))(position((start_p(""23 356 364))(end_p(""23 356 365)))))()(((value PWildcard)(position((start_p(""23 356 367))(end_p(""23 356 368)))))((value(PTaggedValue((value(KId N))(position((start_p(""23 356 370))(end_p(""23 356 371)))))()()))(position((start_p(""23 356 370))(end_p(""23 356 371))))))))(position((start_p(""23 356 364))(end_p(""23 356 372))))))))(position((start_p(""23 356 360))(end_p(""23 356 372)))))((value(Variable((value(Id true))(position((start_p(""23 356 376))(end_p(""23 356 380)))))()))(position((start_p(""23 356 376))(end_p(""23 356 380)))))))(position((start_p(""23 356 360))(end_p(""23 356 380)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""24 381 385))(end_p(""24 381 386)))))()(((value(PVariable((value(Id x))(position((start_p(""24 381 388))(end_p(""24 381 389)))))))(position((start_p(""24 381 388))(end_p(""24 381 389)))))((value(PAnd(((value(PTaggedValue((value(KId C))(position((start_p(""24 381 391))(end_p(""24 381 392)))))()(((value(PVariable((value(Id y))(position((start_p(""24 381 394))(end_p(""24 381 395)))))))(position((start_p(""24 381 394))(end_p(""24 381 395)))))((value PWildcard)(position((start_p(""24 381 397))(end_p(""24 381 398))))))))(position((start_p(""24 381 391))(end_p(""24 381 399)))))((value(PVariable((value(Id l))(position((start_p(""24 381 402))(end_p(""24 381 403)))))))(position((start_p(""24 381 402))(end_p(""24 381 403))))))))(position((start_p(""24 381 391))(end_p(""24 381 403))))))))(position((start_p(""24 381 385))(end_p(""24 381 404)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""24 381 416))(end_p(""24 381 418)))))()))(position((start_p(""24 381 416))(end_p(""24 381 418)))))((value(Apply((value(Apply((value(Variable((value(Id `<=?`))(position((start_p(""24 381 410))(end_p(""24 381 413)))))()))(position((start_p(""24 381 410))(end_p(""24 381 413)))))((value(Variable((value(Id x))(position((start_p(""24 381 408))(end_p(""24 381 409)))))()))(position((start_p(""24 381 408))(end_p(""24 381 409)))))))(position((start_p(""24 381 408))(end_p(""24 381 409)))))((value(Variable((value(Id y))(position((start_p(""24 381 414))(end_p(""24 381 415)))))()))(position((start_p(""24 381 414))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""24 381 419))(end_p(""24 381 425)))))()))(position((start_p(""24 381 419))(end_p(""24 381 425)))))((value(Variable((value(Id l))(position((start_p(""24 381 427))(end_p(""24 381 428)))))()))(position((start_p(""24 381 426))(end_p(""24 381 429)))))))(position((start_p(""24 381 419))(end_p(""24 381 429)))))))(position((start_p(""24 381 408))(end_p(""24 381 429)))))))(position((start_p(""24 381 385))(end_p(""24 381 429))))))))(position((start_p(""22 342 344))(end_p(""25 430 433)))))))))))(position((start_p(""21 325 325))(end_p(""25 430 433)))))((value(DefineValue(SimpleValue(((value(Id l2))(position((start_p(""27 435 439))(end_p(""27 435 441)))))()((value(Tagged((value(KId C))(position((start_p(""27 435 444))(end_p(""27 435 445)))))()(((value(Literal((value(LInt 1))(position((start_p(""27 435 447))(end_p(""27 435 448)))))))(position((start_p(""27 435 447))(end_p(""27 435 448)))))((value(Tagged((value(KId C))(position((start_p(""27 435 450))(end_p(""27 435 451)))))()(((value(Literal((value(LInt 2))(position((start_p(""27 435 453))(end_p(""27 435 454)))))))(position((start_p(""27 435 453))(end_p(""27 435 454)))))((value(Tagged((value(KId C))(position((start_p(""27 435 456))(end_p(""27 435 457)))))()(((value(Literal((value(LInt 6))(position((start_p(""27 435 459))(end_p(""27 435 460)))))))(position((start_p(""27 435 459))(end_p(""27 435 460)))))((value(Tagged((value(KId C))(position((start_p(""27 435 462))(end_p(""27 435 463)))))()(((value(Literal((value(LInt 7))(position((start_p(""27 435 465))(end_p(""27 435 466)))))))(position((start_p(""27 435 465))(end_p(""27 435 466)))))((value(Tagged((value(KId N))(position((start_p(""27 435 468))(end_p(""27 435 469)))))()()))(position((start_p(""27 435 468))(end_p(""27 435 469))))))))(position((start_p(""27 435 462))(end_p(""27 435 470))))))))(position((start_p(""27 435 456))(end_p(""27 435 471))))))))(position((start_p(""27 435 450))(end_p(""27 435 472))))))))(position((start_p(""27 435 444))(end_p(""27 435 473)))))))))(position((start_p(""27 435 435))(end_p(""27 435 473)))))((value(DefineValue(SimpleValue(((value(Id l3))(position((start_p(""29 475 479))(end_p(""29 475 481)))))()((value(Tagged((value(KId C))(position((start_p(""29 475 484))(end_p(""29 475 485)))))()(((value(Literal((value(LInt -1))(position((start_p(""29 475 487))(end_p(""29 475 489)))))))(position((start_p(""29 475 487))(end_p(""29 475 489)))))((value(Tagged((value(KId C))(position((start_p(""29 475 491))(end_p(""29 475 492)))))()(((value(Literal((value(LInt 2))(position((start_p(""29 475 494))(end_p(""29 475 495)))))))(position((start_p(""29 475 494))(end_p(""29 475 495)))))((value(Tagged((value(KId C))(position((start_p(""29 475 497))(end_p(""29 475 498)))))()(((value(Literal((value(LInt 6))(position((start_p(""29 475 500))(end_p(""29 475 501)))))))(position((start_p(""29 475 500))(end_p(""29 475 501)))))((value(Tagged((value(KId C))(position((start_p(""29 475 503))(end_p(""29 475 504)))))()(((value(Literal((value(LInt 70))(position((start_p(""29 475 506))(end_p(""29 475 508)))))))(position((start_p(""29 475 506))(end_p(""29 475 508)))))((value(Tagged((value(KId N))(position((start_p(""29 475 510))(end_p(""29 475 511)))))()()))(position((start_p(""29 475 510))(end_p(""29 475 511))))))))(position((start_p(""29 475 503))(end_p(""29 475 512))))))))(position((start_p(""29 475 497))(end_p(""29 475 513))))))))(position((start_p(""29 475 491))(end_p(""29 475 514))))))))(position((start_p(""29 475 484))(end_p(""29 475 515)))))))))(position((start_p(""29 475 475))(end_p(""29 475 515)))))((value(DefineValue(SimpleValue(((value(Id l4))(position((start_p(""31 517 521))(end_p(""31 517 523)))))()((value(Tagged((value(KId C))(position((start_p(""31 517 526))(end_p(""31 517 527)))))()(((value(Literal((value(LInt -1))(position((start_p(""31 517 529))(end_p(""31 517 531)))))))(position((start_p(""31 517 529))(end_p(""31 517 531)))))((value(Tagged((value(KId C))(position((start_p(""31 517 533))(end_p(""31 517 534)))))()(((value(Literal((value(LInt 20))(position((start_p(""31 517 536))(end_p(""31 517 538)))))))(position((start_p(""31 517 536))(end_p(""31 517 538)))))((value(Tagged((value(KId C))(position((start_p(""31 517 540))(end_p(""31 517 541)))))()(((value(Literal((value(LInt 6))(position((start_p(""31 517 543))(end_p(""31 517 544)))))))(position((start_p(""31 517 543))(end_p(""31 517 544)))))((value(Tagged((value(KId C))(position((start_p(""31 517 546))(end_p(""31 517 547)))))()(((value(Literal((value(LInt 70))(position((start_p(""31 517 549))(end_p(""31 517 551)))))))(position((start_p(""31 517 549))(end_p(""31 517 551)))))((value(Tagged((value(KId N))(position((start_p(""31 517 553))(end_p(""31 517 554)))))()()))(position((start_p(""31 517 553))(end_p(""31 517 554))))))))(position((start_p(""31 517 546))(end_p(""31 517 555))))))))(position((start_p(""31 517 540))(end_p(""31 517 556))))))))(position((start_p(""31 517 533))(end_p(""31 517 557))))))))(position((start_p(""31 517 526))(end_p(""31 517 558)))))))))(position((start_p(""31 517 517))(end_p(""31 517 558)))))((value(DefineValue(RecFunctions((((value(Id not))(position((start_p(""33 560 564))(end_p(""33 560 567)))))()(FunctionDefinition((value(PVariable((value(Id b))(position((start_p(""33 560 569))(end_p(""33 560 570)))))))(position((start_p(""33 560 568))(end_p(""33 560 571)))))((value(IfThenElse((value(Variable((value(Id b))(position((start_p(""33 560 578))(end_p(""33 560 579)))))()))(position((start_p(""33 560 577))(end_p(""33 560 580)))))((value(Variable((value(Id false))(position((start_p(""33 560 588))(end_p(""33 560 593)))))()))(position((start_p(""33 560 588))(end_p(""33 560 593)))))((value(Variable((value(Id true))(position((start_p(""33 560 603))(end_p(""33 560 607)))))()))(position((start_p(""33 560 603))(end_p(""33 560 607)))))))(position((start_p(""33 560 574))(end_p(""33 560 609)))))))))))(position((start_p(""33 560 560))(end_p(""33 560 609)))))((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""35 611 615))(end_p(""35 611 616)))))()((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""38 658 672))(end_p(""38 658 674)))))()))(position((start_p(""38 658 672))(end_p(""38 658 674)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""37 641 655))(end_p(""37 641 657)))))()))(position((start_p(""37 641 655))(end_p(""37 641 657)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""36 619 638))(end_p(""36 619 640)))))()))(position((start_p(""36 619 638))(end_p(""36 619 640)))))((value(Apply((value(Variable((value(Id not))(position((start_p(""36 619 621))(end_p(""36 619 624)))))()))(position((start_p(""36 619 621))(end_p(""36 619 624)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""36 619 626))(end_p(""36 619 632)))))()))(position((start_p(""36 619 626))(end_p(""36 619 632)))))((value(Variable((value(Id l))(position((start_p(""36 619 634))(end_p(""36 619 635)))))()))(position((start_p(""36 619 633))(end_p(""36 619 636)))))))(position((start_p(""36 619 625))(end_p(""36 619 637)))))))(position((start_p(""36 619 621))(end_p(""36 619 637)))))))(position((start_p(""36 619 621))(end_p(""36 619 637)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""37 641 643))(end_p(""37 641 649)))))()))(position((start_p(""37 641 643))(end_p(""37 641 649)))))((value(Variable((value(Id l2))(position((start_p(""37 641 651))(end_p(""37 641 653)))))()))(position((start_p(""37 641 650))(end_p(""37 641 654)))))))(position((start_p(""37 641 643))(end_p(""37 641 654)))))))(position((start_p(""36 619 621))(end_p(""37 641 654)))))))(position((start_p(""36 619 621))(end_p(""37 641 654)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""38 658 660))(end_p(""38 658 666)))))()))(position((start_p(""38 658 660))(end_p(""38 658 666)))))((value(Variable((value(Id l3))(position((start_p(""38 658 668))(end_p(""38 658 670)))))()))(position((start_p(""38 658 667))(end_p(""38 658 671)))))))(position((start_p(""38 658 660))(end_p(""38 658 671)))))))(position((start_p(""36 619 621))(end_p(""38 658 671)))))))(position((start_p(""36 619 621))(end_p(""38 658 671)))))((value(Apply((value(Variable((value(Id not))(position((start_p(""39 675 677))(end_p(""39 675 680)))))()))(position((start_p(""39 675 677))(end_p(""39 675 680)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""39 675 682))(end_p(""39 675 688)))))()))(position((start_p(""39 675 682))(end_p(""39 675 688)))))((value(Variable((value(Id l4))(position((start_p(""39 675 690))(end_p(""39 675 692)))))()))(position((start_p(""39 675 689))(end_p(""39 675 693)))))))(position((start_p(""39 675 681))(end_p(""39 675 694)))))))(position((start_p(""39 675 677))(end_p(""39 675 694)))))))(position((start_p(""36 619 621))(end_p(""39 675 694)))))))))(position((start_p(""35 611 611))(end_p(""39 675 694)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""41 696 700))(end_p(""41 696 704)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""42 707 709))(end_p(""42 707 721)))))()))(position((start_p(""42 707 709))(end_p(""42 707 721)))))((value(Literal((value(LString"This test is "))(position((start_p(""42 707 737))(end_p(""42 707 738)))))))(position((start_p(""42 707 722))(end_p(""42 707 739)))))))(position((start_p(""42 707 709))(end_p(""42 707 739)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""43 741 743))(end_p(""43 741 755)))))()))(position((start_p(""43 741 743))(end_p(""43 741 755)))))((value(IfThenElse((value(Variable((value(Id r))(position((start_p(""43 741 761))(end_p(""43 741 762)))))()))(position((start_p(""43 741 760))(end_p(""43 741 763)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""43 741 777))(end_p(""43 741 778)))))))(position((start_p(""43 741 777))(end_p(""43 741 778)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""43 741 794))(end_p(""43 741 795)))))))(position((start_p(""43 741 794))(end_p(""43 741 795)))))))(position((start_p(""43 741 756))(end_p(""43 741 798)))))))(position((start_p(""43 741 743))(end_p(""43 741 798))))))))(position((start_p(""42 707 709))(end_p(""43 741 798)))))))))(position((start_p(""41 696 696))(end_p(""43 741 798)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/67-sorted.eval.hopix.human-readable b/flap/tests/02-Interpreter/67-sorted.eval.hopix.human-readable new file mode 100644 index 0000000..06bb230 --- /dev/null +++ b/flap/tests/02-Interpreter/67-sorted.eval.hopix.human-readable @@ -0,0 +1,43 @@ +fun concat (l1, l2) = + match (l1) { + | N -> l2 + | C (x, xs) -> C (x, concat (xs, l2)) + } + +let l = C (1, C (2, N)) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) + +fun len (l) = + match (l) { + | N -> 0 + | C (x, xs) -> 1 + len (xs) + } + +fun sorted (l) = + match (l) { + | N | C (_, N) -> true + | C (x, C (y, _) & l) -> x <=? y && sorted (l) + } + +let l2 = C (1, C (2, C (6, C (7, N)))) + +let l3 = C (-1, C (2, C (6, C (70, N)))) + +let l4 = C (-1, C (20, C (6, C (70, N)))) + +fun not (b) = if (b) then { false } else { true } + +let r = + not (sorted (l)) && + sorted (l2) && + sorted (l3) && + not (sorted (l4)) + +let test = + print_string ("This test is "); + print_string (if (r) then { "OK!\n" } else { "KO!\n" }) diff --git a/flap/tests/02-Interpreter/67-sorted.expected b/flap/tests/02-Interpreter/67-sorted.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/67-sorted.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/68-sort.eval.hopix b/flap/tests/02-Interpreter/68-sort.eval.hopix new file mode 100644 index 0000000..4d86ab6 --- /dev/null +++ b/flap/tests/02-Interpreter/68-sort.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""1 0 4))(end_p(""1 0 10)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""1 0 12))(end_p(""1 0 14)))))))(position((start_p(""1 0 12))(end_p(""1 0 14)))))((value(PVariable((value(Id l2))(position((start_p(""1 0 16))(end_p(""1 0 18)))))))(position((start_p(""1 0 16))(end_p(""1 0 18))))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""2 22 31))(end_p(""2 22 33)))))()))(position((start_p(""2 22 31))(end_p(""2 22 33)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""3 37 41))(end_p(""3 37 42)))))()()))(position((start_p(""3 37 41))(end_p(""3 37 42)))))((value(Variable((value(Id l2))(position((start_p(""3 37 46))(end_p(""3 37 48)))))()))(position((start_p(""3 37 46))(end_p(""3 37 48)))))))(position((start_p(""3 37 41))(end_p(""3 37 48)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""4 49 53))(end_p(""4 49 54)))))()(((value(PVariable((value(Id x))(position((start_p(""4 49 56))(end_p(""4 49 57)))))))(position((start_p(""4 49 56))(end_p(""4 49 57)))))((value(PVariable((value(Id xs))(position((start_p(""4 49 59))(end_p(""4 49 61)))))))(position((start_p(""4 49 59))(end_p(""4 49 61))))))))(position((start_p(""4 49 53))(end_p(""4 49 62)))))((value(Tagged((value(KId C))(position((start_p(""4 49 66))(end_p(""4 49 67)))))()(((value(Variable((value(Id x))(position((start_p(""4 49 69))(end_p(""4 49 70)))))()))(position((start_p(""4 49 69))(end_p(""4 49 70)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""4 49 72))(end_p(""4 49 78)))))()))(position((start_p(""4 49 72))(end_p(""4 49 78)))))((value(Tuple(((value(Variable((value(Id xs))(position((start_p(""4 49 80))(end_p(""4 49 82)))))()))(position((start_p(""4 49 80))(end_p(""4 49 82)))))((value(Variable((value(Id l2))(position((start_p(""4 49 84))(end_p(""4 49 86)))))()))(position((start_p(""4 49 84))(end_p(""4 49 86))))))))(position((start_p(""4 49 79))(end_p(""4 49 87)))))))(position((start_p(""4 49 72))(end_p(""4 49 87))))))))(position((start_p(""4 49 66))(end_p(""4 49 88)))))))(position((start_p(""4 49 53))(end_p(""4 49 88))))))))(position((start_p(""2 22 24))(end_p(""5 89 92)))))))))))(position((start_p(""1 0 0))(end_p(""5 89 92)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""7 94 98))(end_p(""7 94 99)))))()((value(Tagged((value(KId C))(position((start_p(""7 94 102))(end_p(""7 94 103)))))()(((value(Literal((value(LInt 1))(position((start_p(""7 94 105))(end_p(""7 94 106)))))))(position((start_p(""7 94 105))(end_p(""7 94 106)))))((value(Tagged((value(KId C))(position((start_p(""7 94 108))(end_p(""7 94 109)))))()(((value(Literal((value(LInt 2))(position((start_p(""7 94 111))(end_p(""7 94 112)))))))(position((start_p(""7 94 111))(end_p(""7 94 112)))))((value(Tagged((value(KId N))(position((start_p(""7 94 114))(end_p(""7 94 115)))))()()))(position((start_p(""7 94 114))(end_p(""7 94 115))))))))(position((start_p(""7 94 108))(end_p(""7 94 116))))))))(position((start_p(""7 94 102))(end_p(""7 94 117)))))))))(position((start_p(""7 94 94))(end_p(""7 94 117)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""8 118 122))(end_p(""8 118 123)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 118 126))(end_p(""8 118 132)))))()))(position((start_p(""8 118 126))(end_p(""8 118 132)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""8 118 134))(end_p(""8 118 135)))))()))(position((start_p(""8 118 134))(end_p(""8 118 135)))))((value(Variable((value(Id l))(position((start_p(""8 118 137))(end_p(""8 118 138)))))()))(position((start_p(""8 118 137))(end_p(""8 118 138))))))))(position((start_p(""8 118 133))(end_p(""8 118 139)))))))(position((start_p(""8 118 126))(end_p(""8 118 139)))))))))(position((start_p(""8 118 118))(end_p(""8 118 139)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""9 140 144))(end_p(""9 140 145)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""9 140 148))(end_p(""9 140 154)))))()))(position((start_p(""9 140 148))(end_p(""9 140 154)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""9 140 156))(end_p(""9 140 157)))))()))(position((start_p(""9 140 156))(end_p(""9 140 157)))))((value(Variable((value(Id l))(position((start_p(""9 140 159))(end_p(""9 140 160)))))()))(position((start_p(""9 140 159))(end_p(""9 140 160))))))))(position((start_p(""9 140 155))(end_p(""9 140 161)))))))(position((start_p(""9 140 148))(end_p(""9 140 161)))))))))(position((start_p(""9 140 140))(end_p(""9 140 161)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""10 162 166))(end_p(""10 162 167)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""10 162 170))(end_p(""10 162 176)))))()))(position((start_p(""10 162 170))(end_p(""10 162 176)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""10 162 178))(end_p(""10 162 179)))))()))(position((start_p(""10 162 178))(end_p(""10 162 179)))))((value(Variable((value(Id l))(position((start_p(""10 162 181))(end_p(""10 162 182)))))()))(position((start_p(""10 162 181))(end_p(""10 162 182))))))))(position((start_p(""10 162 177))(end_p(""10 162 183)))))))(position((start_p(""10 162 170))(end_p(""10 162 183)))))))))(position((start_p(""10 162 162))(end_p(""10 162 183)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""11 184 188))(end_p(""11 184 189)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""11 184 192))(end_p(""11 184 198)))))()))(position((start_p(""11 184 192))(end_p(""11 184 198)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""11 184 200))(end_p(""11 184 201)))))()))(position((start_p(""11 184 200))(end_p(""11 184 201)))))((value(Variable((value(Id l))(position((start_p(""11 184 203))(end_p(""11 184 204)))))()))(position((start_p(""11 184 203))(end_p(""11 184 204))))))))(position((start_p(""11 184 199))(end_p(""11 184 205)))))))(position((start_p(""11 184 192))(end_p(""11 184 205)))))))))(position((start_p(""11 184 184))(end_p(""11 184 205)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""12 206 210))(end_p(""12 206 211)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""12 206 214))(end_p(""12 206 220)))))()))(position((start_p(""12 206 214))(end_p(""12 206 220)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""12 206 222))(end_p(""12 206 223)))))()))(position((start_p(""12 206 222))(end_p(""12 206 223)))))((value(Variable((value(Id l))(position((start_p(""12 206 225))(end_p(""12 206 226)))))()))(position((start_p(""12 206 225))(end_p(""12 206 226))))))))(position((start_p(""12 206 221))(end_p(""12 206 227)))))))(position((start_p(""12 206 214))(end_p(""12 206 227)))))))))(position((start_p(""12 206 206))(end_p(""12 206 227)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""13 228 232))(end_p(""13 228 233)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""13 228 236))(end_p(""13 228 242)))))()))(position((start_p(""13 228 236))(end_p(""13 228 242)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""13 228 244))(end_p(""13 228 245)))))()))(position((start_p(""13 228 244))(end_p(""13 228 245)))))((value(Variable((value(Id l))(position((start_p(""13 228 247))(end_p(""13 228 248)))))()))(position((start_p(""13 228 247))(end_p(""13 228 248))))))))(position((start_p(""13 228 243))(end_p(""13 228 249)))))))(position((start_p(""13 228 236))(end_p(""13 228 249)))))))))(position((start_p(""13 228 228))(end_p(""13 228 249)))))((value(DefineValue(RecFunctions((((value(Id len))(position((start_p(""15 251 255))(end_p(""15 251 258)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""15 251 260))(end_p(""15 251 261)))))))(position((start_p(""15 251 259))(end_p(""15 251 262)))))((value(Case((value(Variable((value(Id l))(position((start_p(""16 265 274))(end_p(""16 265 275)))))()))(position((start_p(""16 265 274))(end_p(""16 265 275)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""17 279 283))(end_p(""17 279 284)))))()()))(position((start_p(""17 279 283))(end_p(""17 279 284)))))((value(Literal((value(LInt 0))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 283))(end_p(""17 279 289)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""18 290 294))(end_p(""18 290 295)))))()(((value(PVariable((value(Id x))(position((start_p(""18 290 297))(end_p(""18 290 298)))))))(position((start_p(""18 290 297))(end_p(""18 290 298)))))((value(PVariable((value(Id xs))(position((start_p(""18 290 300))(end_p(""18 290 302)))))))(position((start_p(""18 290 300))(end_p(""18 290 302))))))))(position((start_p(""18 290 294))(end_p(""18 290 303)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""18 290 309))(end_p(""18 290 310)))))()))(position((start_p(""18 290 309))(end_p(""18 290 310)))))((value(Literal((value(LInt 1))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))((value(Apply((value(Variable((value(Id len))(position((start_p(""18 290 311))(end_p(""18 290 314)))))()))(position((start_p(""18 290 311))(end_p(""18 290 314)))))((value(Variable((value(Id xs))(position((start_p(""18 290 316))(end_p(""18 290 318)))))()))(position((start_p(""18 290 315))(end_p(""18 290 319)))))))(position((start_p(""18 290 311))(end_p(""18 290 319)))))))(position((start_p(""18 290 307))(end_p(""18 290 319)))))))(position((start_p(""18 290 294))(end_p(""18 290 319))))))))(position((start_p(""16 265 267))(end_p(""19 320 323)))))))))))(position((start_p(""15 251 251))(end_p(""19 320 323)))))((value(DefineValue(RecFunctions((((value(Id sorted))(position((start_p(""21 325 329))(end_p(""21 325 335)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""21 325 337))(end_p(""21 325 338)))))))(position((start_p(""21 325 336))(end_p(""21 325 339)))))((value(Case((value(Variable((value(Id l))(position((start_p(""22 342 351))(end_p(""22 342 352)))))()))(position((start_p(""22 342 351))(end_p(""22 342 352)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId N))(position((start_p(""23 356 360))(end_p(""23 356 361)))))()()))(position((start_p(""23 356 360))(end_p(""23 356 361)))))((value(PTaggedValue((value(KId C))(position((start_p(""23 356 364))(end_p(""23 356 365)))))()(((value PWildcard)(position((start_p(""23 356 367))(end_p(""23 356 368)))))((value(PTaggedValue((value(KId N))(position((start_p(""23 356 370))(end_p(""23 356 371)))))()()))(position((start_p(""23 356 370))(end_p(""23 356 371))))))))(position((start_p(""23 356 364))(end_p(""23 356 372))))))))(position((start_p(""23 356 360))(end_p(""23 356 372)))))((value(Variable((value(Id true))(position((start_p(""23 356 376))(end_p(""23 356 380)))))()))(position((start_p(""23 356 376))(end_p(""23 356 380)))))))(position((start_p(""23 356 360))(end_p(""23 356 380)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""24 381 385))(end_p(""24 381 386)))))()(((value(PVariable((value(Id x))(position((start_p(""24 381 388))(end_p(""24 381 389)))))))(position((start_p(""24 381 388))(end_p(""24 381 389)))))((value(PAnd(((value(PTaggedValue((value(KId C))(position((start_p(""24 381 391))(end_p(""24 381 392)))))()(((value(PVariable((value(Id y))(position((start_p(""24 381 394))(end_p(""24 381 395)))))))(position((start_p(""24 381 394))(end_p(""24 381 395)))))((value PWildcard)(position((start_p(""24 381 397))(end_p(""24 381 398))))))))(position((start_p(""24 381 391))(end_p(""24 381 399)))))((value(PVariable((value(Id l))(position((start_p(""24 381 402))(end_p(""24 381 403)))))))(position((start_p(""24 381 402))(end_p(""24 381 403))))))))(position((start_p(""24 381 391))(end_p(""24 381 403))))))))(position((start_p(""24 381 385))(end_p(""24 381 404)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""24 381 416))(end_p(""24 381 418)))))()))(position((start_p(""24 381 416))(end_p(""24 381 418)))))((value(Apply((value(Apply((value(Variable((value(Id `<=?`))(position((start_p(""24 381 410))(end_p(""24 381 413)))))()))(position((start_p(""24 381 410))(end_p(""24 381 413)))))((value(Variable((value(Id x))(position((start_p(""24 381 408))(end_p(""24 381 409)))))()))(position((start_p(""24 381 408))(end_p(""24 381 409)))))))(position((start_p(""24 381 408))(end_p(""24 381 409)))))((value(Variable((value(Id y))(position((start_p(""24 381 414))(end_p(""24 381 415)))))()))(position((start_p(""24 381 414))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""24 381 419))(end_p(""24 381 425)))))()))(position((start_p(""24 381 419))(end_p(""24 381 425)))))((value(Variable((value(Id l))(position((start_p(""24 381 427))(end_p(""24 381 428)))))()))(position((start_p(""24 381 426))(end_p(""24 381 429)))))))(position((start_p(""24 381 419))(end_p(""24 381 429)))))))(position((start_p(""24 381 408))(end_p(""24 381 429)))))))(position((start_p(""24 381 385))(end_p(""24 381 429))))))))(position((start_p(""22 342 344))(end_p(""25 430 433)))))))))))(position((start_p(""21 325 325))(end_p(""25 430 433)))))((value(DefineValue(SimpleValue(((value(Id l2))(position((start_p(""27 435 439))(end_p(""27 435 441)))))()((value(Tagged((value(KId C))(position((start_p(""27 435 444))(end_p(""27 435 445)))))()(((value(Literal((value(LInt 1))(position((start_p(""27 435 447))(end_p(""27 435 448)))))))(position((start_p(""27 435 447))(end_p(""27 435 448)))))((value(Tagged((value(KId C))(position((start_p(""27 435 450))(end_p(""27 435 451)))))()(((value(Literal((value(LInt 2))(position((start_p(""27 435 453))(end_p(""27 435 454)))))))(position((start_p(""27 435 453))(end_p(""27 435 454)))))((value(Tagged((value(KId C))(position((start_p(""27 435 456))(end_p(""27 435 457)))))()(((value(Literal((value(LInt 6))(position((start_p(""27 435 459))(end_p(""27 435 460)))))))(position((start_p(""27 435 459))(end_p(""27 435 460)))))((value(Tagged((value(KId C))(position((start_p(""27 435 462))(end_p(""27 435 463)))))()(((value(Literal((value(LInt 7))(position((start_p(""27 435 465))(end_p(""27 435 466)))))))(position((start_p(""27 435 465))(end_p(""27 435 466)))))((value(Tagged((value(KId N))(position((start_p(""27 435 468))(end_p(""27 435 469)))))()()))(position((start_p(""27 435 468))(end_p(""27 435 469))))))))(position((start_p(""27 435 462))(end_p(""27 435 470))))))))(position((start_p(""27 435 456))(end_p(""27 435 471))))))))(position((start_p(""27 435 450))(end_p(""27 435 472))))))))(position((start_p(""27 435 444))(end_p(""27 435 473)))))))))(position((start_p(""27 435 435))(end_p(""27 435 473)))))((value(DefineValue(SimpleValue(((value(Id l3))(position((start_p(""29 475 479))(end_p(""29 475 481)))))()((value(Tagged((value(KId C))(position((start_p(""29 475 484))(end_p(""29 475 485)))))()(((value(Literal((value(LInt -1))(position((start_p(""29 475 487))(end_p(""29 475 489)))))))(position((start_p(""29 475 487))(end_p(""29 475 489)))))((value(Tagged((value(KId C))(position((start_p(""29 475 491))(end_p(""29 475 492)))))()(((value(Literal((value(LInt 2))(position((start_p(""29 475 494))(end_p(""29 475 495)))))))(position((start_p(""29 475 494))(end_p(""29 475 495)))))((value(Tagged((value(KId C))(position((start_p(""29 475 497))(end_p(""29 475 498)))))()(((value(Literal((value(LInt 6))(position((start_p(""29 475 500))(end_p(""29 475 501)))))))(position((start_p(""29 475 500))(end_p(""29 475 501)))))((value(Tagged((value(KId C))(position((start_p(""29 475 503))(end_p(""29 475 504)))))()(((value(Literal((value(LInt 70))(position((start_p(""29 475 506))(end_p(""29 475 508)))))))(position((start_p(""29 475 506))(end_p(""29 475 508)))))((value(Tagged((value(KId N))(position((start_p(""29 475 510))(end_p(""29 475 511)))))()()))(position((start_p(""29 475 510))(end_p(""29 475 511))))))))(position((start_p(""29 475 503))(end_p(""29 475 512))))))))(position((start_p(""29 475 497))(end_p(""29 475 513))))))))(position((start_p(""29 475 491))(end_p(""29 475 514))))))))(position((start_p(""29 475 484))(end_p(""29 475 515)))))))))(position((start_p(""29 475 475))(end_p(""29 475 515)))))((value(DefineValue(SimpleValue(((value(Id l4))(position((start_p(""31 517 521))(end_p(""31 517 523)))))()((value(Tagged((value(KId C))(position((start_p(""31 517 526))(end_p(""31 517 527)))))()(((value(Literal((value(LInt -1))(position((start_p(""31 517 529))(end_p(""31 517 531)))))))(position((start_p(""31 517 529))(end_p(""31 517 531)))))((value(Tagged((value(KId C))(position((start_p(""31 517 533))(end_p(""31 517 534)))))()(((value(Literal((value(LInt 20))(position((start_p(""31 517 536))(end_p(""31 517 538)))))))(position((start_p(""31 517 536))(end_p(""31 517 538)))))((value(Tagged((value(KId C))(position((start_p(""31 517 540))(end_p(""31 517 541)))))()(((value(Literal((value(LInt 6))(position((start_p(""31 517 543))(end_p(""31 517 544)))))))(position((start_p(""31 517 543))(end_p(""31 517 544)))))((value(Tagged((value(KId C))(position((start_p(""31 517 546))(end_p(""31 517 547)))))()(((value(Literal((value(LInt 70))(position((start_p(""31 517 549))(end_p(""31 517 551)))))))(position((start_p(""31 517 549))(end_p(""31 517 551)))))((value(Tagged((value(KId N))(position((start_p(""31 517 553))(end_p(""31 517 554)))))()()))(position((start_p(""31 517 553))(end_p(""31 517 554))))))))(position((start_p(""31 517 546))(end_p(""31 517 555))))))))(position((start_p(""31 517 540))(end_p(""31 517 556))))))))(position((start_p(""31 517 533))(end_p(""31 517 557))))))))(position((start_p(""31 517 526))(end_p(""31 517 558)))))))))(position((start_p(""31 517 517))(end_p(""31 517 558)))))((value(DefineValue(RecFunctions((((value(Id not))(position((start_p(""33 560 564))(end_p(""33 560 567)))))()(FunctionDefinition((value(PVariable((value(Id b))(position((start_p(""33 560 569))(end_p(""33 560 570)))))))(position((start_p(""33 560 568))(end_p(""33 560 571)))))((value(IfThenElse((value(Variable((value(Id b))(position((start_p(""33 560 578))(end_p(""33 560 579)))))()))(position((start_p(""33 560 577))(end_p(""33 560 580)))))((value(Variable((value(Id false))(position((start_p(""33 560 588))(end_p(""33 560 593)))))()))(position((start_p(""33 560 588))(end_p(""33 560 593)))))((value(Variable((value(Id true))(position((start_p(""33 560 603))(end_p(""33 560 607)))))()))(position((start_p(""33 560 603))(end_p(""33 560 607)))))))(position((start_p(""33 560 574))(end_p(""33 560 609)))))))))))(position((start_p(""33 560 560))(end_p(""33 560 609)))))((value(DefineValue(RecFunctions((((value(Id sort))(position((start_p(""35 611 615))(end_p(""35 611 619)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""35 611 621))(end_p(""35 611 622)))))))(position((start_p(""35 611 620))(end_p(""35 611 623)))))((value(Case((value(Variable((value(Id l))(position((start_p(""36 626 637))(end_p(""36 626 638)))))()))(position((start_p(""36 626 637))(end_p(""36 626 638)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""37 642 648))(end_p(""37 642 649)))))()()))(position((start_p(""37 642 648))(end_p(""37 642 649)))))((value(Tagged((value(KId N))(position((start_p(""37 642 653))(end_p(""37 642 654)))))()()))(position((start_p(""37 642 653))(end_p(""37 642 654)))))))(position((start_p(""37 642 648))(end_p(""37 642 654)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""38 655 661))(end_p(""38 655 662)))))()(((value(PVariable((value(Id x))(position((start_p(""38 655 664))(end_p(""38 655 665)))))))(position((start_p(""38 655 664))(end_p(""38 655 665)))))((value(PVariable((value(Id xs))(position((start_p(""38 655 667))(end_p(""38 655 669)))))))(position((start_p(""38 655 667))(end_p(""38 655 669))))))))(position((start_p(""38 655 661))(end_p(""38 655 670)))))((value(Case((value(Apply((value(Variable((value(Id pivot))(position((start_p(""38 655 681))(end_p(""38 655 686)))))()))(position((start_p(""38 655 681))(end_p(""38 655 686)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""38 655 688))(end_p(""38 655 689)))))()))(position((start_p(""38 655 688))(end_p(""38 655 689)))))((value(Variable((value(Id xs))(position((start_p(""38 655 691))(end_p(""38 655 693)))))()))(position((start_p(""38 655 691))(end_p(""38 655 693))))))))(position((start_p(""38 655 687))(end_p(""38 655 694)))))))(position((start_p(""38 655 681))(end_p(""38 655 694)))))(((value(Branch((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""39 698 707))(end_p(""39 698 709)))))))(position((start_p(""39 698 707))(end_p(""39 698 709)))))((value(PVariable((value(Id l2))(position((start_p(""39 698 711))(end_p(""39 698 713)))))))(position((start_p(""39 698 711))(end_p(""39 698 713))))))))(position((start_p(""39 698 706))(end_p(""39 698 714)))))((value(Define(SimpleValue(((value(Id l1))(position((start_p(""40 718 730))(end_p(""40 718 732)))))()((value(Apply((value(Variable((value(Id sort))(position((start_p(""40 718 735))(end_p(""40 718 739)))))()))(position((start_p(""40 718 735))(end_p(""40 718 739)))))((value(Variable((value(Id l1))(position((start_p(""40 718 741))(end_p(""40 718 743)))))()))(position((start_p(""40 718 740))(end_p(""40 718 744)))))))(position((start_p(""40 718 735))(end_p(""40 718 744)))))))((value(Define(SimpleValue(((value(Id l2))(position((start_p(""41 746 758))(end_p(""41 746 760)))))()((value(Apply((value(Variable((value(Id sort))(position((start_p(""41 746 763))(end_p(""41 746 767)))))()))(position((start_p(""41 746 763))(end_p(""41 746 767)))))((value(Variable((value(Id l2))(position((start_p(""41 746 769))(end_p(""41 746 771)))))()))(position((start_p(""41 746 768))(end_p(""41 746 772)))))))(position((start_p(""41 746 763))(end_p(""41 746 772)))))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""42 774 782))(end_p(""42 774 788)))))()))(position((start_p(""42 774 782))(end_p(""42 774 788)))))((value(Tuple(((value(Variable((value(Id l1))(position((start_p(""42 774 790))(end_p(""42 774 792)))))()))(position((start_p(""42 774 790))(end_p(""42 774 792)))))((value(Tagged((value(KId C))(position((start_p(""42 774 794))(end_p(""42 774 795)))))()(((value(Variable((value(Id x))(position((start_p(""42 774 797))(end_p(""42 774 798)))))()))(position((start_p(""42 774 797))(end_p(""42 774 798)))))((value(Variable((value(Id l2))(position((start_p(""42 774 800))(end_p(""42 774 802)))))()))(position((start_p(""42 774 800))(end_p(""42 774 802))))))))(position((start_p(""42 774 794))(end_p(""42 774 803))))))))(position((start_p(""42 774 789))(end_p(""42 774 804)))))))(position((start_p(""42 774 782))(end_p(""42 774 804)))))))(position((start_p(""41 746 754))(end_p(""42 774 804)))))))(position((start_p(""40 718 726))(end_p(""42 774 804)))))))(position((start_p(""39 698 706))(end_p(""42 774 804))))))))(position((start_p(""38 655 674))(end_p(""43 805 812)))))))(position((start_p(""38 655 661))(end_p(""43 805 812))))))))(position((start_p(""36 626 630))(end_p(""44 813 818)))))))(((value(Id pivot))(position((start_p(""45 819 823))(end_p(""45 819 828)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""45 819 830))(end_p(""45 819 831)))))))(position((start_p(""45 819 830))(end_p(""45 819 831)))))((value(PVariable((value(Id l))(position((start_p(""45 819 833))(end_p(""45 819 834)))))))(position((start_p(""45 819 833))(end_p(""45 819 834))))))))(position((start_p(""45 819 829))(end_p(""45 819 835)))))((value(Case((value(Variable((value(Id l))(position((start_p(""46 838 849))(end_p(""46 838 850)))))()))(position((start_p(""46 838 849))(end_p(""46 838 850)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""47 854 860))(end_p(""47 854 861)))))()()))(position((start_p(""47 854 860))(end_p(""47 854 861)))))((value(Tuple(((value(Tagged((value(KId N))(position((start_p(""48 865 872))(end_p(""48 865 873)))))()()))(position((start_p(""48 865 872))(end_p(""48 865 873)))))((value(Tagged((value(KId N))(position((start_p(""48 865 875))(end_p(""48 865 876)))))()()))(position((start_p(""48 865 875))(end_p(""48 865 876))))))))(position((start_p(""48 865 871))(end_p(""48 865 877)))))))(position((start_p(""47 854 860))(end_p(""48 865 877)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""49 878 884))(end_p(""49 878 885)))))()(((value(PVariable((value(Id y))(position((start_p(""49 878 887))(end_p(""49 878 888)))))))(position((start_p(""49 878 887))(end_p(""49 878 888)))))((value(PVariable((value(Id ys))(position((start_p(""49 878 890))(end_p(""49 878 892)))))))(position((start_p(""49 878 890))(end_p(""49 878 892))))))))(position((start_p(""49 878 884))(end_p(""49 878 893)))))((value(Case((value(Apply((value(Variable((value(Id pivot))(position((start_p(""50 897 910))(end_p(""50 897 915)))))()))(position((start_p(""50 897 910))(end_p(""50 897 915)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""50 897 917))(end_p(""50 897 918)))))()))(position((start_p(""50 897 917))(end_p(""50 897 918)))))((value(Variable((value(Id ys))(position((start_p(""50 897 920))(end_p(""50 897 922)))))()))(position((start_p(""50 897 920))(end_p(""50 897 922))))))))(position((start_p(""50 897 916))(end_p(""50 897 923)))))))(position((start_p(""50 897 910))(end_p(""50 897 923)))))(((value(Branch((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""51 927 936))(end_p(""51 927 938)))))))(position((start_p(""51 927 936))(end_p(""51 927 938)))))((value(PVariable((value(Id l2))(position((start_p(""51 927 940))(end_p(""51 927 942)))))))(position((start_p(""51 927 940))(end_p(""51 927 942))))))))(position((start_p(""51 927 935))(end_p(""51 927 943)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""52 947 962))(end_p(""52 947 964)))))()))(position((start_p(""52 947 962))(end_p(""52 947 964)))))((value(Variable((value(Id y))(position((start_p(""52 947 960))(end_p(""52 947 961)))))()))(position((start_p(""52 947 960))(end_p(""52 947 961)))))))(position((start_p(""52 947 960))(end_p(""52 947 961)))))((value(Variable((value(Id x))(position((start_p(""52 947 965))(end_p(""52 947 966)))))()))(position((start_p(""52 947 965))(end_p(""52 947 966)))))))(position((start_p(""52 947 959))(end_p(""52 947 967)))))((value(Tuple(((value(Variable((value(Id l1))(position((start_p(""52 947 976))(end_p(""52 947 978)))))()))(position((start_p(""52 947 976))(end_p(""52 947 978)))))((value(Tagged((value(KId C))(position((start_p(""52 947 981))(end_p(""52 947 982)))))()(((value(Variable((value(Id y))(position((start_p(""52 947 984))(end_p(""52 947 985)))))()))(position((start_p(""52 947 984))(end_p(""52 947 985)))))((value(Variable((value(Id l2))(position((start_p(""52 947 987))(end_p(""52 947 989)))))()))(position((start_p(""52 947 987))(end_p(""52 947 989))))))))(position((start_p(""52 947 981))(end_p(""52 947 990))))))))(position((start_p(""52 947 975))(end_p(""52 947 991)))))((value(Tuple(((value(Tagged((value(KId C))(position((start_p(""52 947 1002))(end_p(""52 947 1003)))))()(((value(Variable((value(Id y))(position((start_p(""52 947 1005))(end_p(""52 947 1006)))))()))(position((start_p(""52 947 1005))(end_p(""52 947 1006)))))((value(Variable((value(Id l1))(position((start_p(""52 947 1008))(end_p(""52 947 1010)))))()))(position((start_p(""52 947 1008))(end_p(""52 947 1010))))))))(position((start_p(""52 947 1002))(end_p(""52 947 1011)))))((value(Variable((value(Id l2))(position((start_p(""52 947 1013))(end_p(""52 947 1015)))))()))(position((start_p(""52 947 1013))(end_p(""52 947 1015))))))))(position((start_p(""52 947 1001))(end_p(""52 947 1016)))))))(position((start_p(""52 947 956))(end_p(""52 947 1018)))))))(position((start_p(""51 927 935))(end_p(""52 947 1018))))))))(position((start_p(""50 897 903))(end_p(""53 1019 1026)))))))(position((start_p(""49 878 884))(end_p(""53 1019 1026))))))))(position((start_p(""46 838 842))(end_p(""54 1027 1032)))))))))))(position((start_p(""35 611 611))(end_p(""54 1027 1032)))))((value(DefineValue(RecFunctions((((value(Id print))(position((start_p(""56 1034 1038))(end_p(""56 1034 1043)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""56 1034 1045))(end_p(""56 1034 1046)))))))(position((start_p(""56 1034 1044))(end_p(""56 1034 1047)))))((value(Case((value(Variable((value(Id l))(position((start_p(""57 1050 1061))(end_p(""57 1050 1062)))))()))(position((start_p(""57 1050 1061))(end_p(""57 1050 1062)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""58 1066 1072))(end_p(""58 1066 1073)))))()()))(position((start_p(""58 1066 1072))(end_p(""58 1066 1073)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""58 1066 1077))(end_p(""58 1066 1089)))))()))(position((start_p(""58 1066 1077))(end_p(""58 1066 1089)))))((value(Literal((value(LString"\n"))(position((start_p(""58 1066 1094))(end_p(""58 1066 1095)))))))(position((start_p(""58 1066 1090))(end_p(""58 1066 1096)))))))(position((start_p(""58 1066 1077))(end_p(""58 1066 1096)))))))(position((start_p(""58 1066 1072))(end_p(""58 1066 1096)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""59 1097 1103))(end_p(""59 1097 1104)))))()(((value(PVariable((value(Id x))(position((start_p(""59 1097 1106))(end_p(""59 1097 1107)))))))(position((start_p(""59 1097 1106))(end_p(""59 1097 1107)))))((value(PVariable((value(Id xs))(position((start_p(""59 1097 1109))(end_p(""59 1097 1111)))))))(position((start_p(""59 1097 1109))(end_p(""59 1097 1111))))))))(position((start_p(""59 1097 1103))(end_p(""59 1097 1112)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""59 1097 1116))(end_p(""59 1097 1125)))))()))(position((start_p(""59 1097 1116))(end_p(""59 1097 1125)))))((value(Variable((value(Id x))(position((start_p(""59 1097 1127))(end_p(""59 1097 1128)))))()))(position((start_p(""59 1097 1126))(end_p(""59 1097 1129)))))))(position((start_p(""59 1097 1116))(end_p(""59 1097 1129)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""59 1097 1131))(end_p(""59 1097 1143)))))()))(position((start_p(""59 1097 1131))(end_p(""59 1097 1143)))))((value(Literal((value(LString" "))(position((start_p(""59 1097 1147))(end_p(""59 1097 1148)))))))(position((start_p(""59 1097 1144))(end_p(""59 1097 1149)))))))(position((start_p(""59 1097 1131))(end_p(""59 1097 1149)))))((value(Apply((value(Variable((value(Id print))(position((start_p(""59 1097 1151))(end_p(""59 1097 1156)))))()))(position((start_p(""59 1097 1151))(end_p(""59 1097 1156)))))((value(Variable((value(Id xs))(position((start_p(""59 1097 1158))(end_p(""59 1097 1160)))))()))(position((start_p(""59 1097 1157))(end_p(""59 1097 1161)))))))(position((start_p(""59 1097 1151))(end_p(""59 1097 1161))))))))(position((start_p(""59 1097 1131))(end_p(""59 1097 1161))))))))(position((start_p(""59 1097 1116))(end_p(""59 1097 1161)))))))(position((start_p(""59 1097 1103))(end_p(""59 1097 1161))))))))(position((start_p(""57 1050 1054))(end_p(""60 1162 1167)))))))))))(position((start_p(""56 1034 1034))(end_p(""60 1162 1167)))))((value(DefineValue(RecFunctions((((value(Id show))(position((start_p(""62 1169 1173))(end_p(""62 1169 1177)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""62 1169 1179))(end_p(""62 1169 1180)))))))(position((start_p(""62 1169 1178))(end_p(""62 1169 1181)))))((value(Sequence(((value(Apply((value(Variable((value(Id print))(position((start_p(""63 1184 1188))(end_p(""63 1184 1193)))))()))(position((start_p(""63 1184 1188))(end_p(""63 1184 1193)))))((value(Variable((value(Id l))(position((start_p(""63 1184 1195))(end_p(""63 1184 1196)))))()))(position((start_p(""63 1184 1194))(end_p(""63 1184 1197)))))))(position((start_p(""63 1184 1188))(end_p(""63 1184 1197)))))((value(Variable((value(Id l))(position((start_p(""64 1199 1203))(end_p(""64 1199 1204)))))()))(position((start_p(""64 1199 1203))(end_p(""64 1199 1204))))))))(position((start_p(""63 1184 1188))(end_p(""64 1199 1204)))))))))))(position((start_p(""62 1169 1169))(end_p(""64 1199 1204)))))((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""66 1206 1210))(end_p(""66 1206 1211)))))()((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""69 1261 1282))(end_p(""69 1261 1284)))))()))(position((start_p(""69 1261 1282))(end_p(""69 1261 1284)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""68 1237 1258))(end_p(""68 1237 1260)))))()))(position((start_p(""68 1237 1258))(end_p(""68 1237 1260)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""67 1214 1234))(end_p(""67 1214 1236)))))()))(position((start_p(""67 1214 1234))(end_p(""67 1214 1236)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""67 1214 1216))(end_p(""67 1214 1222)))))()))(position((start_p(""67 1214 1216))(end_p(""67 1214 1222)))))((value(Apply((value(Variable((value(Id sort))(position((start_p(""67 1214 1224))(end_p(""67 1214 1228)))))()))(position((start_p(""67 1214 1224))(end_p(""67 1214 1228)))))((value(Variable((value(Id l))(position((start_p(""67 1214 1230))(end_p(""67 1214 1231)))))()))(position((start_p(""67 1214 1229))(end_p(""67 1214 1232)))))))(position((start_p(""67 1214 1223))(end_p(""67 1214 1233)))))))(position((start_p(""67 1214 1216))(end_p(""67 1214 1233)))))))(position((start_p(""67 1214 1216))(end_p(""67 1214 1233)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""68 1237 1239))(end_p(""68 1237 1245)))))()))(position((start_p(""68 1237 1239))(end_p(""68 1237 1245)))))((value(Apply((value(Variable((value(Id sort))(position((start_p(""68 1237 1247))(end_p(""68 1237 1251)))))()))(position((start_p(""68 1237 1247))(end_p(""68 1237 1251)))))((value(Variable((value(Id l2))(position((start_p(""68 1237 1253))(end_p(""68 1237 1255)))))()))(position((start_p(""68 1237 1252))(end_p(""68 1237 1256)))))))(position((start_p(""68 1237 1246))(end_p(""68 1237 1257)))))))(position((start_p(""68 1237 1239))(end_p(""68 1237 1257)))))))(position((start_p(""67 1214 1216))(end_p(""68 1237 1257)))))))(position((start_p(""67 1214 1216))(end_p(""68 1237 1257)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""69 1261 1263))(end_p(""69 1261 1269)))))()))(position((start_p(""69 1261 1263))(end_p(""69 1261 1269)))))((value(Apply((value(Variable((value(Id sort))(position((start_p(""69 1261 1271))(end_p(""69 1261 1275)))))()))(position((start_p(""69 1261 1271))(end_p(""69 1261 1275)))))((value(Variable((value(Id l3))(position((start_p(""69 1261 1277))(end_p(""69 1261 1279)))))()))(position((start_p(""69 1261 1276))(end_p(""69 1261 1280)))))))(position((start_p(""69 1261 1270))(end_p(""69 1261 1281)))))))(position((start_p(""69 1261 1263))(end_p(""69 1261 1281)))))))(position((start_p(""67 1214 1216))(end_p(""69 1261 1281)))))))(position((start_p(""67 1214 1216))(end_p(""69 1261 1281)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""70 1285 1287))(end_p(""70 1285 1293)))))()))(position((start_p(""70 1285 1287))(end_p(""70 1285 1293)))))((value(Apply((value(Variable((value(Id sort))(position((start_p(""70 1285 1295))(end_p(""70 1285 1299)))))()))(position((start_p(""70 1285 1295))(end_p(""70 1285 1299)))))((value(Variable((value(Id l4))(position((start_p(""70 1285 1301))(end_p(""70 1285 1303)))))()))(position((start_p(""70 1285 1300))(end_p(""70 1285 1304)))))))(position((start_p(""70 1285 1294))(end_p(""70 1285 1305)))))))(position((start_p(""70 1285 1287))(end_p(""70 1285 1305)))))))(position((start_p(""67 1214 1216))(end_p(""70 1285 1305)))))))))(position((start_p(""66 1206 1206))(end_p(""70 1285 1305)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""72 1307 1311))(end_p(""72 1307 1315)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""73 1318 1320))(end_p(""73 1318 1332)))))()))(position((start_p(""73 1318 1320))(end_p(""73 1318 1332)))))((value(Literal((value(LString"This test is "))(position((start_p(""73 1318 1348))(end_p(""73 1318 1349)))))))(position((start_p(""73 1318 1333))(end_p(""73 1318 1350)))))))(position((start_p(""73 1318 1320))(end_p(""73 1318 1350)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""74 1352 1354))(end_p(""74 1352 1366)))))()))(position((start_p(""74 1352 1354))(end_p(""74 1352 1366)))))((value(IfThenElse((value(Variable((value(Id r))(position((start_p(""74 1352 1372))(end_p(""74 1352 1373)))))()))(position((start_p(""74 1352 1371))(end_p(""74 1352 1374)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""74 1352 1388))(end_p(""74 1352 1389)))))))(position((start_p(""74 1352 1388))(end_p(""74 1352 1389)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""74 1352 1405))(end_p(""74 1352 1406)))))))(position((start_p(""74 1352 1405))(end_p(""74 1352 1406)))))))(position((start_p(""74 1352 1367))(end_p(""74 1352 1409)))))))(position((start_p(""74 1352 1354))(end_p(""74 1352 1409))))))))(position((start_p(""73 1318 1320))(end_p(""74 1352 1409)))))))))(position((start_p(""72 1307 1307))(end_p(""74 1352 1409)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/68-sort.eval.hopix.human-readable b/flap/tests/02-Interpreter/68-sort.eval.hopix.human-readable new file mode 100644 index 0000000..3dadba0 --- /dev/null +++ b/flap/tests/02-Interpreter/68-sort.eval.hopix.human-readable @@ -0,0 +1,74 @@ +fun concat (l1, l2) = + match (l1) { + | N -> l2 + | C (x, xs) -> C (x, concat (xs, l2)) + } + +let l = C (1, C (2, N)) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) + +fun len (l) = + match (l) { + | N -> 0 + | C (x, xs) -> 1 + len (xs) + } + +fun sorted (l) = + match (l) { + | N | C (_, N) -> true + | C (x, C (y, _) & l) -> x <=? y && sorted (l) + } + +let l2 = C (1, C (2, C (6, C (7, N)))) + +let l3 = C (-1, C (2, C (6, C (70, N)))) + +let l4 = C (-1, C (20, C (6, C (70, N)))) + +fun not (b) = if (b) then { false } else { true } + +fun sort (l) = + match (l) { + | N -> N + | C (x, xs) -> match (pivot (x, xs)) { + | (l1, l2) -> + let l1 = sort (l1); + let l2 = sort (l2); + concat (l1, C (x, l2)) + } + } +and pivot (x, l) = + match (l) { + | N -> + (N, N) + | C (y, ys) -> + match (pivot (x, ys)) { + | (l1, l2) -> + if (y >? x) then { (l1, C (y, l2)) } else { (C (y, l1), l2) } + } + } + +fun print (l) = + match (l) { + | N -> print_string ("\n") + | C (x, xs) -> print_int (x); print_string (" "); print (xs) + } + +fun show (l) = + print (l); + l + +let r = + sorted (sort (l)) && + sorted (sort (l2)) && + sorted (sort (l3)) && + sorted (sort (l4)) + +let test = + print_string ("This test is "); + print_string (if (r) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/68-sort.expected b/flap/tests/02-Interpreter/68-sort.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/68-sort.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/69-sort-big.eval.hopix b/flap/tests/02-Interpreter/69-sort-big.eval.hopix new file mode 100644 index 0000000..84d44a2 --- /dev/null +++ b/flap/tests/02-Interpreter/69-sort-big.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""1 0 4))(end_p(""1 0 10)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""1 0 12))(end_p(""1 0 14)))))))(position((start_p(""1 0 12))(end_p(""1 0 14)))))((value(PVariable((value(Id l2))(position((start_p(""1 0 16))(end_p(""1 0 18)))))))(position((start_p(""1 0 16))(end_p(""1 0 18))))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""2 22 31))(end_p(""2 22 33)))))()))(position((start_p(""2 22 31))(end_p(""2 22 33)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""3 37 41))(end_p(""3 37 42)))))()()))(position((start_p(""3 37 41))(end_p(""3 37 42)))))((value(Variable((value(Id l2))(position((start_p(""3 37 46))(end_p(""3 37 48)))))()))(position((start_p(""3 37 46))(end_p(""3 37 48)))))))(position((start_p(""3 37 41))(end_p(""3 37 48)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""4 49 53))(end_p(""4 49 54)))))()(((value(PVariable((value(Id x))(position((start_p(""4 49 56))(end_p(""4 49 57)))))))(position((start_p(""4 49 56))(end_p(""4 49 57)))))((value(PVariable((value(Id xs))(position((start_p(""4 49 59))(end_p(""4 49 61)))))))(position((start_p(""4 49 59))(end_p(""4 49 61))))))))(position((start_p(""4 49 53))(end_p(""4 49 62)))))((value(Tagged((value(KId C))(position((start_p(""4 49 66))(end_p(""4 49 67)))))()(((value(Variable((value(Id x))(position((start_p(""4 49 69))(end_p(""4 49 70)))))()))(position((start_p(""4 49 69))(end_p(""4 49 70)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""4 49 72))(end_p(""4 49 78)))))()))(position((start_p(""4 49 72))(end_p(""4 49 78)))))((value(Tuple(((value(Variable((value(Id xs))(position((start_p(""4 49 80))(end_p(""4 49 82)))))()))(position((start_p(""4 49 80))(end_p(""4 49 82)))))((value(Variable((value(Id l2))(position((start_p(""4 49 84))(end_p(""4 49 86)))))()))(position((start_p(""4 49 84))(end_p(""4 49 86))))))))(position((start_p(""4 49 79))(end_p(""4 49 87)))))))(position((start_p(""4 49 72))(end_p(""4 49 87))))))))(position((start_p(""4 49 66))(end_p(""4 49 88)))))))(position((start_p(""4 49 53))(end_p(""4 49 88))))))))(position((start_p(""2 22 24))(end_p(""5 89 92)))))))))))(position((start_p(""1 0 0))(end_p(""5 89 92)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""7 94 98))(end_p(""7 94 99)))))()((value(Tagged((value(KId C))(position((start_p(""7 94 102))(end_p(""7 94 103)))))()(((value(Literal((value(LInt 1))(position((start_p(""7 94 105))(end_p(""7 94 106)))))))(position((start_p(""7 94 105))(end_p(""7 94 106)))))((value(Tagged((value(KId C))(position((start_p(""7 94 108))(end_p(""7 94 109)))))()(((value(Literal((value(LInt 2))(position((start_p(""7 94 111))(end_p(""7 94 112)))))))(position((start_p(""7 94 111))(end_p(""7 94 112)))))((value(Tagged((value(KId N))(position((start_p(""7 94 114))(end_p(""7 94 115)))))()()))(position((start_p(""7 94 114))(end_p(""7 94 115))))))))(position((start_p(""7 94 108))(end_p(""7 94 116))))))))(position((start_p(""7 94 102))(end_p(""7 94 117)))))))))(position((start_p(""7 94 94))(end_p(""7 94 117)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""8 118 122))(end_p(""8 118 123)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 118 126))(end_p(""8 118 132)))))()))(position((start_p(""8 118 126))(end_p(""8 118 132)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""8 118 134))(end_p(""8 118 135)))))()))(position((start_p(""8 118 134))(end_p(""8 118 135)))))((value(Variable((value(Id l))(position((start_p(""8 118 137))(end_p(""8 118 138)))))()))(position((start_p(""8 118 137))(end_p(""8 118 138))))))))(position((start_p(""8 118 133))(end_p(""8 118 139)))))))(position((start_p(""8 118 126))(end_p(""8 118 139)))))))))(position((start_p(""8 118 118))(end_p(""8 118 139)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""9 140 144))(end_p(""9 140 145)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""9 140 148))(end_p(""9 140 154)))))()))(position((start_p(""9 140 148))(end_p(""9 140 154)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""9 140 156))(end_p(""9 140 157)))))()))(position((start_p(""9 140 156))(end_p(""9 140 157)))))((value(Variable((value(Id l))(position((start_p(""9 140 159))(end_p(""9 140 160)))))()))(position((start_p(""9 140 159))(end_p(""9 140 160))))))))(position((start_p(""9 140 155))(end_p(""9 140 161)))))))(position((start_p(""9 140 148))(end_p(""9 140 161)))))))))(position((start_p(""9 140 140))(end_p(""9 140 161)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""10 162 166))(end_p(""10 162 167)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""10 162 170))(end_p(""10 162 176)))))()))(position((start_p(""10 162 170))(end_p(""10 162 176)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""10 162 178))(end_p(""10 162 179)))))()))(position((start_p(""10 162 178))(end_p(""10 162 179)))))((value(Variable((value(Id l))(position((start_p(""10 162 181))(end_p(""10 162 182)))))()))(position((start_p(""10 162 181))(end_p(""10 162 182))))))))(position((start_p(""10 162 177))(end_p(""10 162 183)))))))(position((start_p(""10 162 170))(end_p(""10 162 183)))))))))(position((start_p(""10 162 162))(end_p(""10 162 183)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""11 184 188))(end_p(""11 184 189)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""11 184 192))(end_p(""11 184 198)))))()))(position((start_p(""11 184 192))(end_p(""11 184 198)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""11 184 200))(end_p(""11 184 201)))))()))(position((start_p(""11 184 200))(end_p(""11 184 201)))))((value(Variable((value(Id l))(position((start_p(""11 184 203))(end_p(""11 184 204)))))()))(position((start_p(""11 184 203))(end_p(""11 184 204))))))))(position((start_p(""11 184 199))(end_p(""11 184 205)))))))(position((start_p(""11 184 192))(end_p(""11 184 205)))))))))(position((start_p(""11 184 184))(end_p(""11 184 205)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""12 206 210))(end_p(""12 206 211)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""12 206 214))(end_p(""12 206 220)))))()))(position((start_p(""12 206 214))(end_p(""12 206 220)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""12 206 222))(end_p(""12 206 223)))))()))(position((start_p(""12 206 222))(end_p(""12 206 223)))))((value(Variable((value(Id l))(position((start_p(""12 206 225))(end_p(""12 206 226)))))()))(position((start_p(""12 206 225))(end_p(""12 206 226))))))))(position((start_p(""12 206 221))(end_p(""12 206 227)))))))(position((start_p(""12 206 214))(end_p(""12 206 227)))))))))(position((start_p(""12 206 206))(end_p(""12 206 227)))))((value(DefineValue(SimpleValue(((value(Id l))(position((start_p(""13 228 232))(end_p(""13 228 233)))))()((value(Apply((value(Variable((value(Id concat))(position((start_p(""13 228 236))(end_p(""13 228 242)))))()))(position((start_p(""13 228 236))(end_p(""13 228 242)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""13 228 244))(end_p(""13 228 245)))))()))(position((start_p(""13 228 244))(end_p(""13 228 245)))))((value(Variable((value(Id l))(position((start_p(""13 228 247))(end_p(""13 228 248)))))()))(position((start_p(""13 228 247))(end_p(""13 228 248))))))))(position((start_p(""13 228 243))(end_p(""13 228 249)))))))(position((start_p(""13 228 236))(end_p(""13 228 249)))))))))(position((start_p(""13 228 228))(end_p(""13 228 249)))))((value(DefineValue(RecFunctions((((value(Id len))(position((start_p(""15 251 255))(end_p(""15 251 258)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""15 251 260))(end_p(""15 251 261)))))))(position((start_p(""15 251 259))(end_p(""15 251 262)))))((value(Case((value(Variable((value(Id l))(position((start_p(""16 265 274))(end_p(""16 265 275)))))()))(position((start_p(""16 265 274))(end_p(""16 265 275)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""17 279 283))(end_p(""17 279 284)))))()()))(position((start_p(""17 279 283))(end_p(""17 279 284)))))((value(Literal((value(LInt 0))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 288))(end_p(""17 279 289)))))))(position((start_p(""17 279 283))(end_p(""17 279 289)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""18 290 294))(end_p(""18 290 295)))))()(((value(PVariable((value(Id x))(position((start_p(""18 290 297))(end_p(""18 290 298)))))))(position((start_p(""18 290 297))(end_p(""18 290 298)))))((value(PVariable((value(Id xs))(position((start_p(""18 290 300))(end_p(""18 290 302)))))))(position((start_p(""18 290 300))(end_p(""18 290 302))))))))(position((start_p(""18 290 294))(end_p(""18 290 303)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""18 290 309))(end_p(""18 290 310)))))()))(position((start_p(""18 290 309))(end_p(""18 290 310)))))((value(Literal((value(LInt 1))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))))(position((start_p(""18 290 307))(end_p(""18 290 308)))))((value(Apply((value(Variable((value(Id len))(position((start_p(""18 290 311))(end_p(""18 290 314)))))()))(position((start_p(""18 290 311))(end_p(""18 290 314)))))((value(Variable((value(Id xs))(position((start_p(""18 290 316))(end_p(""18 290 318)))))()))(position((start_p(""18 290 315))(end_p(""18 290 319)))))))(position((start_p(""18 290 311))(end_p(""18 290 319)))))))(position((start_p(""18 290 307))(end_p(""18 290 319)))))))(position((start_p(""18 290 294))(end_p(""18 290 319))))))))(position((start_p(""16 265 267))(end_p(""19 320 323)))))))))))(position((start_p(""15 251 251))(end_p(""19 320 323)))))((value(DefineValue(RecFunctions((((value(Id sorted))(position((start_p(""21 325 329))(end_p(""21 325 335)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""21 325 337))(end_p(""21 325 338)))))))(position((start_p(""21 325 336))(end_p(""21 325 339)))))((value(Case((value(Variable((value(Id l))(position((start_p(""22 342 351))(end_p(""22 342 352)))))()))(position((start_p(""22 342 351))(end_p(""22 342 352)))))(((value(Branch((value(POr(((value(PTaggedValue((value(KId N))(position((start_p(""23 356 360))(end_p(""23 356 361)))))()()))(position((start_p(""23 356 360))(end_p(""23 356 361)))))((value(PTaggedValue((value(KId C))(position((start_p(""23 356 364))(end_p(""23 356 365)))))()(((value PWildcard)(position((start_p(""23 356 367))(end_p(""23 356 368)))))((value(PTaggedValue((value(KId N))(position((start_p(""23 356 370))(end_p(""23 356 371)))))()()))(position((start_p(""23 356 370))(end_p(""23 356 371))))))))(position((start_p(""23 356 364))(end_p(""23 356 372))))))))(position((start_p(""23 356 360))(end_p(""23 356 372)))))((value(Variable((value(Id true))(position((start_p(""23 356 376))(end_p(""23 356 380)))))()))(position((start_p(""23 356 376))(end_p(""23 356 380)))))))(position((start_p(""23 356 360))(end_p(""23 356 380)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""24 381 385))(end_p(""24 381 386)))))()(((value(PVariable((value(Id x))(position((start_p(""24 381 388))(end_p(""24 381 389)))))))(position((start_p(""24 381 388))(end_p(""24 381 389)))))((value(PAnd(((value(PTaggedValue((value(KId C))(position((start_p(""24 381 391))(end_p(""24 381 392)))))()(((value(PVariable((value(Id y))(position((start_p(""24 381 394))(end_p(""24 381 395)))))))(position((start_p(""24 381 394))(end_p(""24 381 395)))))((value PWildcard)(position((start_p(""24 381 397))(end_p(""24 381 398))))))))(position((start_p(""24 381 391))(end_p(""24 381 399)))))((value(PVariable((value(Id l))(position((start_p(""24 381 402))(end_p(""24 381 403)))))))(position((start_p(""24 381 402))(end_p(""24 381 403))))))))(position((start_p(""24 381 391))(end_p(""24 381 403))))))))(position((start_p(""24 381 385))(end_p(""24 381 404)))))((value(Apply((value(Apply((value(Variable((value(Id `&&`))(position((start_p(""24 381 416))(end_p(""24 381 418)))))()))(position((start_p(""24 381 416))(end_p(""24 381 418)))))((value(Apply((value(Apply((value(Variable((value(Id `<=?`))(position((start_p(""24 381 410))(end_p(""24 381 413)))))()))(position((start_p(""24 381 410))(end_p(""24 381 413)))))((value(Variable((value(Id x))(position((start_p(""24 381 408))(end_p(""24 381 409)))))()))(position((start_p(""24 381 408))(end_p(""24 381 409)))))))(position((start_p(""24 381 408))(end_p(""24 381 409)))))((value(Variable((value(Id y))(position((start_p(""24 381 414))(end_p(""24 381 415)))))()))(position((start_p(""24 381 414))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))))(position((start_p(""24 381 408))(end_p(""24 381 415)))))((value(Apply((value(Variable((value(Id sorted))(position((start_p(""24 381 419))(end_p(""24 381 425)))))()))(position((start_p(""24 381 419))(end_p(""24 381 425)))))((value(Variable((value(Id l))(position((start_p(""24 381 427))(end_p(""24 381 428)))))()))(position((start_p(""24 381 426))(end_p(""24 381 429)))))))(position((start_p(""24 381 419))(end_p(""24 381 429)))))))(position((start_p(""24 381 408))(end_p(""24 381 429)))))))(position((start_p(""24 381 385))(end_p(""24 381 429))))))))(position((start_p(""22 342 344))(end_p(""25 430 433)))))))))))(position((start_p(""21 325 325))(end_p(""25 430 433)))))((value(DefineValue(SimpleValue(((value(Id l2))(position((start_p(""27 435 439))(end_p(""27 435 441)))))()((value(Tagged((value(KId C))(position((start_p(""27 435 444))(end_p(""27 435 445)))))()(((value(Literal((value(LInt 1))(position((start_p(""27 435 447))(end_p(""27 435 448)))))))(position((start_p(""27 435 447))(end_p(""27 435 448)))))((value(Tagged((value(KId C))(position((start_p(""27 435 450))(end_p(""27 435 451)))))()(((value(Literal((value(LInt 2))(position((start_p(""27 435 453))(end_p(""27 435 454)))))))(position((start_p(""27 435 453))(end_p(""27 435 454)))))((value(Tagged((value(KId C))(position((start_p(""27 435 456))(end_p(""27 435 457)))))()(((value(Literal((value(LInt 6))(position((start_p(""27 435 459))(end_p(""27 435 460)))))))(position((start_p(""27 435 459))(end_p(""27 435 460)))))((value(Tagged((value(KId C))(position((start_p(""27 435 462))(end_p(""27 435 463)))))()(((value(Literal((value(LInt 7))(position((start_p(""27 435 465))(end_p(""27 435 466)))))))(position((start_p(""27 435 465))(end_p(""27 435 466)))))((value(Tagged((value(KId N))(position((start_p(""27 435 468))(end_p(""27 435 469)))))()()))(position((start_p(""27 435 468))(end_p(""27 435 469))))))))(position((start_p(""27 435 462))(end_p(""27 435 470))))))))(position((start_p(""27 435 456))(end_p(""27 435 471))))))))(position((start_p(""27 435 450))(end_p(""27 435 472))))))))(position((start_p(""27 435 444))(end_p(""27 435 473)))))))))(position((start_p(""27 435 435))(end_p(""27 435 473)))))((value(DefineValue(SimpleValue(((value(Id l3))(position((start_p(""29 475 479))(end_p(""29 475 481)))))()((value(Tagged((value(KId C))(position((start_p(""29 475 484))(end_p(""29 475 485)))))()(((value(Literal((value(LInt -1))(position((start_p(""29 475 487))(end_p(""29 475 489)))))))(position((start_p(""29 475 487))(end_p(""29 475 489)))))((value(Tagged((value(KId C))(position((start_p(""29 475 491))(end_p(""29 475 492)))))()(((value(Literal((value(LInt 2))(position((start_p(""29 475 494))(end_p(""29 475 495)))))))(position((start_p(""29 475 494))(end_p(""29 475 495)))))((value(Tagged((value(KId C))(position((start_p(""29 475 497))(end_p(""29 475 498)))))()(((value(Literal((value(LInt 6))(position((start_p(""29 475 500))(end_p(""29 475 501)))))))(position((start_p(""29 475 500))(end_p(""29 475 501)))))((value(Tagged((value(KId C))(position((start_p(""29 475 503))(end_p(""29 475 504)))))()(((value(Literal((value(LInt 70))(position((start_p(""29 475 506))(end_p(""29 475 508)))))))(position((start_p(""29 475 506))(end_p(""29 475 508)))))((value(Tagged((value(KId N))(position((start_p(""29 475 510))(end_p(""29 475 511)))))()()))(position((start_p(""29 475 510))(end_p(""29 475 511))))))))(position((start_p(""29 475 503))(end_p(""29 475 512))))))))(position((start_p(""29 475 497))(end_p(""29 475 513))))))))(position((start_p(""29 475 491))(end_p(""29 475 514))))))))(position((start_p(""29 475 484))(end_p(""29 475 515)))))))))(position((start_p(""29 475 475))(end_p(""29 475 515)))))((value(DefineValue(SimpleValue(((value(Id l4))(position((start_p(""31 517 521))(end_p(""31 517 523)))))()((value(Tagged((value(KId C))(position((start_p(""31 517 526))(end_p(""31 517 527)))))()(((value(Literal((value(LInt -1))(position((start_p(""31 517 529))(end_p(""31 517 531)))))))(position((start_p(""31 517 529))(end_p(""31 517 531)))))((value(Tagged((value(KId C))(position((start_p(""31 517 533))(end_p(""31 517 534)))))()(((value(Literal((value(LInt 20))(position((start_p(""31 517 536))(end_p(""31 517 538)))))))(position((start_p(""31 517 536))(end_p(""31 517 538)))))((value(Tagged((value(KId C))(position((start_p(""31 517 540))(end_p(""31 517 541)))))()(((value(Literal((value(LInt 6))(position((start_p(""31 517 543))(end_p(""31 517 544)))))))(position((start_p(""31 517 543))(end_p(""31 517 544)))))((value(Tagged((value(KId C))(position((start_p(""31 517 546))(end_p(""31 517 547)))))()(((value(Literal((value(LInt 70))(position((start_p(""31 517 549))(end_p(""31 517 551)))))))(position((start_p(""31 517 549))(end_p(""31 517 551)))))((value(Tagged((value(KId N))(position((start_p(""31 517 553))(end_p(""31 517 554)))))()()))(position((start_p(""31 517 553))(end_p(""31 517 554))))))))(position((start_p(""31 517 546))(end_p(""31 517 555))))))))(position((start_p(""31 517 540))(end_p(""31 517 556))))))))(position((start_p(""31 517 533))(end_p(""31 517 557))))))))(position((start_p(""31 517 526))(end_p(""31 517 558)))))))))(position((start_p(""31 517 517))(end_p(""31 517 558)))))((value(DefineValue(RecFunctions((((value(Id not))(position((start_p(""33 560 564))(end_p(""33 560 567)))))()(FunctionDefinition((value(PVariable((value(Id b))(position((start_p(""33 560 569))(end_p(""33 560 570)))))))(position((start_p(""33 560 568))(end_p(""33 560 571)))))((value(IfThenElse((value(Variable((value(Id b))(position((start_p(""33 560 578))(end_p(""33 560 579)))))()))(position((start_p(""33 560 577))(end_p(""33 560 580)))))((value(Variable((value(Id false))(position((start_p(""33 560 588))(end_p(""33 560 593)))))()))(position((start_p(""33 560 588))(end_p(""33 560 593)))))((value(Variable((value(Id true))(position((start_p(""33 560 603))(end_p(""33 560 607)))))()))(position((start_p(""33 560 603))(end_p(""33 560 607)))))))(position((start_p(""33 560 574))(end_p(""33 560 609)))))))))))(position((start_p(""33 560 560))(end_p(""33 560 609)))))((value(DefineValue(RecFunctions((((value(Id sort))(position((start_p(""35 611 615))(end_p(""35 611 619)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""35 611 621))(end_p(""35 611 622)))))))(position((start_p(""35 611 620))(end_p(""35 611 623)))))((value(Case((value(Variable((value(Id l))(position((start_p(""36 626 637))(end_p(""36 626 638)))))()))(position((start_p(""36 626 637))(end_p(""36 626 638)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""37 642 648))(end_p(""37 642 649)))))()()))(position((start_p(""37 642 648))(end_p(""37 642 649)))))((value(Tagged((value(KId N))(position((start_p(""37 642 653))(end_p(""37 642 654)))))()()))(position((start_p(""37 642 653))(end_p(""37 642 654)))))))(position((start_p(""37 642 648))(end_p(""37 642 654)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""38 655 661))(end_p(""38 655 662)))))()(((value(PVariable((value(Id x))(position((start_p(""38 655 664))(end_p(""38 655 665)))))))(position((start_p(""38 655 664))(end_p(""38 655 665)))))((value(PVariable((value(Id xs))(position((start_p(""38 655 667))(end_p(""38 655 669)))))))(position((start_p(""38 655 667))(end_p(""38 655 669))))))))(position((start_p(""38 655 661))(end_p(""38 655 670)))))((value(Case((value(Apply((value(Variable((value(Id pivot))(position((start_p(""38 655 681))(end_p(""38 655 686)))))()))(position((start_p(""38 655 681))(end_p(""38 655 686)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""38 655 688))(end_p(""38 655 689)))))()))(position((start_p(""38 655 688))(end_p(""38 655 689)))))((value(Variable((value(Id xs))(position((start_p(""38 655 691))(end_p(""38 655 693)))))()))(position((start_p(""38 655 691))(end_p(""38 655 693))))))))(position((start_p(""38 655 687))(end_p(""38 655 694)))))))(position((start_p(""38 655 681))(end_p(""38 655 694)))))(((value(Branch((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""39 698 707))(end_p(""39 698 709)))))))(position((start_p(""39 698 707))(end_p(""39 698 709)))))((value(PVariable((value(Id l2))(position((start_p(""39 698 711))(end_p(""39 698 713)))))))(position((start_p(""39 698 711))(end_p(""39 698 713))))))))(position((start_p(""39 698 706))(end_p(""39 698 714)))))((value(Define(SimpleValue(((value(Id l1))(position((start_p(""40 718 730))(end_p(""40 718 732)))))()((value(Apply((value(Variable((value(Id sort))(position((start_p(""40 718 735))(end_p(""40 718 739)))))()))(position((start_p(""40 718 735))(end_p(""40 718 739)))))((value(Variable((value(Id l1))(position((start_p(""40 718 741))(end_p(""40 718 743)))))()))(position((start_p(""40 718 740))(end_p(""40 718 744)))))))(position((start_p(""40 718 735))(end_p(""40 718 744)))))))((value(Define(SimpleValue(((value(Id l2))(position((start_p(""41 746 758))(end_p(""41 746 760)))))()((value(Apply((value(Variable((value(Id sort))(position((start_p(""41 746 763))(end_p(""41 746 767)))))()))(position((start_p(""41 746 763))(end_p(""41 746 767)))))((value(Variable((value(Id l2))(position((start_p(""41 746 769))(end_p(""41 746 771)))))()))(position((start_p(""41 746 768))(end_p(""41 746 772)))))))(position((start_p(""41 746 763))(end_p(""41 746 772)))))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""42 774 782))(end_p(""42 774 788)))))()))(position((start_p(""42 774 782))(end_p(""42 774 788)))))((value(Tuple(((value(Variable((value(Id l1))(position((start_p(""42 774 790))(end_p(""42 774 792)))))()))(position((start_p(""42 774 790))(end_p(""42 774 792)))))((value(Tagged((value(KId C))(position((start_p(""42 774 794))(end_p(""42 774 795)))))()(((value(Variable((value(Id x))(position((start_p(""42 774 797))(end_p(""42 774 798)))))()))(position((start_p(""42 774 797))(end_p(""42 774 798)))))((value(Variable((value(Id l2))(position((start_p(""42 774 800))(end_p(""42 774 802)))))()))(position((start_p(""42 774 800))(end_p(""42 774 802))))))))(position((start_p(""42 774 794))(end_p(""42 774 803))))))))(position((start_p(""42 774 789))(end_p(""42 774 804)))))))(position((start_p(""42 774 782))(end_p(""42 774 804)))))))(position((start_p(""41 746 754))(end_p(""42 774 804)))))))(position((start_p(""40 718 726))(end_p(""42 774 804)))))))(position((start_p(""39 698 706))(end_p(""42 774 804))))))))(position((start_p(""38 655 674))(end_p(""43 805 812)))))))(position((start_p(""38 655 661))(end_p(""43 805 812))))))))(position((start_p(""36 626 630))(end_p(""44 813 818)))))))(((value(Id pivot))(position((start_p(""45 819 823))(end_p(""45 819 828)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""45 819 830))(end_p(""45 819 831)))))))(position((start_p(""45 819 830))(end_p(""45 819 831)))))((value(PVariable((value(Id l))(position((start_p(""45 819 833))(end_p(""45 819 834)))))))(position((start_p(""45 819 833))(end_p(""45 819 834))))))))(position((start_p(""45 819 829))(end_p(""45 819 835)))))((value(Case((value(Variable((value(Id l))(position((start_p(""46 838 849))(end_p(""46 838 850)))))()))(position((start_p(""46 838 849))(end_p(""46 838 850)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""47 854 860))(end_p(""47 854 861)))))()()))(position((start_p(""47 854 860))(end_p(""47 854 861)))))((value(Tuple(((value(Tagged((value(KId N))(position((start_p(""48 865 872))(end_p(""48 865 873)))))()()))(position((start_p(""48 865 872))(end_p(""48 865 873)))))((value(Tagged((value(KId N))(position((start_p(""48 865 875))(end_p(""48 865 876)))))()()))(position((start_p(""48 865 875))(end_p(""48 865 876))))))))(position((start_p(""48 865 871))(end_p(""48 865 877)))))))(position((start_p(""47 854 860))(end_p(""48 865 877)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""49 878 884))(end_p(""49 878 885)))))()(((value(PVariable((value(Id y))(position((start_p(""49 878 887))(end_p(""49 878 888)))))))(position((start_p(""49 878 887))(end_p(""49 878 888)))))((value(PVariable((value(Id ys))(position((start_p(""49 878 890))(end_p(""49 878 892)))))))(position((start_p(""49 878 890))(end_p(""49 878 892))))))))(position((start_p(""49 878 884))(end_p(""49 878 893)))))((value(Case((value(Apply((value(Variable((value(Id pivot))(position((start_p(""50 897 910))(end_p(""50 897 915)))))()))(position((start_p(""50 897 910))(end_p(""50 897 915)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""50 897 917))(end_p(""50 897 918)))))()))(position((start_p(""50 897 917))(end_p(""50 897 918)))))((value(Variable((value(Id ys))(position((start_p(""50 897 920))(end_p(""50 897 922)))))()))(position((start_p(""50 897 920))(end_p(""50 897 922))))))))(position((start_p(""50 897 916))(end_p(""50 897 923)))))))(position((start_p(""50 897 910))(end_p(""50 897 923)))))(((value(Branch((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""51 927 936))(end_p(""51 927 938)))))))(position((start_p(""51 927 936))(end_p(""51 927 938)))))((value(PVariable((value(Id l2))(position((start_p(""51 927 940))(end_p(""51 927 942)))))))(position((start_p(""51 927 940))(end_p(""51 927 942))))))))(position((start_p(""51 927 935))(end_p(""51 927 943)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""52 947 962))(end_p(""52 947 964)))))()))(position((start_p(""52 947 962))(end_p(""52 947 964)))))((value(Variable((value(Id y))(position((start_p(""52 947 960))(end_p(""52 947 961)))))()))(position((start_p(""52 947 960))(end_p(""52 947 961)))))))(position((start_p(""52 947 960))(end_p(""52 947 961)))))((value(Variable((value(Id x))(position((start_p(""52 947 965))(end_p(""52 947 966)))))()))(position((start_p(""52 947 965))(end_p(""52 947 966)))))))(position((start_p(""52 947 959))(end_p(""52 947 967)))))((value(Tuple(((value(Variable((value(Id l1))(position((start_p(""52 947 976))(end_p(""52 947 978)))))()))(position((start_p(""52 947 976))(end_p(""52 947 978)))))((value(Tagged((value(KId C))(position((start_p(""52 947 981))(end_p(""52 947 982)))))()(((value(Variable((value(Id y))(position((start_p(""52 947 984))(end_p(""52 947 985)))))()))(position((start_p(""52 947 984))(end_p(""52 947 985)))))((value(Variable((value(Id l2))(position((start_p(""52 947 987))(end_p(""52 947 989)))))()))(position((start_p(""52 947 987))(end_p(""52 947 989))))))))(position((start_p(""52 947 981))(end_p(""52 947 990))))))))(position((start_p(""52 947 975))(end_p(""52 947 991)))))((value(Tuple(((value(Tagged((value(KId C))(position((start_p(""52 947 1002))(end_p(""52 947 1003)))))()(((value(Variable((value(Id y))(position((start_p(""52 947 1005))(end_p(""52 947 1006)))))()))(position((start_p(""52 947 1005))(end_p(""52 947 1006)))))((value(Variable((value(Id l1))(position((start_p(""52 947 1008))(end_p(""52 947 1010)))))()))(position((start_p(""52 947 1008))(end_p(""52 947 1010))))))))(position((start_p(""52 947 1002))(end_p(""52 947 1011)))))((value(Variable((value(Id l2))(position((start_p(""52 947 1013))(end_p(""52 947 1015)))))()))(position((start_p(""52 947 1013))(end_p(""52 947 1015))))))))(position((start_p(""52 947 1001))(end_p(""52 947 1016)))))))(position((start_p(""52 947 956))(end_p(""52 947 1018)))))))(position((start_p(""51 927 935))(end_p(""52 947 1018))))))))(position((start_p(""50 897 903))(end_p(""53 1019 1026)))))))(position((start_p(""49 878 884))(end_p(""53 1019 1026))))))))(position((start_p(""46 838 842))(end_p(""54 1027 1032)))))))))))(position((start_p(""35 611 611))(end_p(""54 1027 1032)))))((value(DefineValue(RecFunctions((((value(Id print))(position((start_p(""56 1034 1038))(end_p(""56 1034 1043)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""56 1034 1045))(end_p(""56 1034 1046)))))))(position((start_p(""56 1034 1044))(end_p(""56 1034 1047)))))((value(Case((value(Variable((value(Id l))(position((start_p(""57 1050 1061))(end_p(""57 1050 1062)))))()))(position((start_p(""57 1050 1061))(end_p(""57 1050 1062)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""58 1066 1072))(end_p(""58 1066 1073)))))()()))(position((start_p(""58 1066 1072))(end_p(""58 1066 1073)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""58 1066 1077))(end_p(""58 1066 1089)))))()))(position((start_p(""58 1066 1077))(end_p(""58 1066 1089)))))((value(Literal((value(LString"\n"))(position((start_p(""58 1066 1094))(end_p(""58 1066 1095)))))))(position((start_p(""58 1066 1090))(end_p(""58 1066 1096)))))))(position((start_p(""58 1066 1077))(end_p(""58 1066 1096)))))))(position((start_p(""58 1066 1072))(end_p(""58 1066 1096)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""59 1097 1103))(end_p(""59 1097 1104)))))()(((value(PVariable((value(Id x))(position((start_p(""59 1097 1106))(end_p(""59 1097 1107)))))))(position((start_p(""59 1097 1106))(end_p(""59 1097 1107)))))((value(PVariable((value(Id xs))(position((start_p(""59 1097 1109))(end_p(""59 1097 1111)))))))(position((start_p(""59 1097 1109))(end_p(""59 1097 1111))))))))(position((start_p(""59 1097 1103))(end_p(""59 1097 1112)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""59 1097 1116))(end_p(""59 1097 1125)))))()))(position((start_p(""59 1097 1116))(end_p(""59 1097 1125)))))((value(Variable((value(Id x))(position((start_p(""59 1097 1127))(end_p(""59 1097 1128)))))()))(position((start_p(""59 1097 1126))(end_p(""59 1097 1129)))))))(position((start_p(""59 1097 1116))(end_p(""59 1097 1129)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""59 1097 1131))(end_p(""59 1097 1143)))))()))(position((start_p(""59 1097 1131))(end_p(""59 1097 1143)))))((value(Literal((value(LString" "))(position((start_p(""59 1097 1147))(end_p(""59 1097 1148)))))))(position((start_p(""59 1097 1144))(end_p(""59 1097 1149)))))))(position((start_p(""59 1097 1131))(end_p(""59 1097 1149)))))((value(Apply((value(Variable((value(Id print))(position((start_p(""59 1097 1151))(end_p(""59 1097 1156)))))()))(position((start_p(""59 1097 1151))(end_p(""59 1097 1156)))))((value(Variable((value(Id xs))(position((start_p(""59 1097 1158))(end_p(""59 1097 1160)))))()))(position((start_p(""59 1097 1157))(end_p(""59 1097 1161)))))))(position((start_p(""59 1097 1151))(end_p(""59 1097 1161))))))))(position((start_p(""59 1097 1131))(end_p(""59 1097 1161))))))))(position((start_p(""59 1097 1116))(end_p(""59 1097 1161)))))))(position((start_p(""59 1097 1103))(end_p(""59 1097 1161))))))))(position((start_p(""57 1050 1054))(end_p(""60 1162 1167)))))))))))(position((start_p(""56 1034 1034))(end_p(""60 1162 1167)))))((value(DefineValue(RecFunctions((((value(Id show))(position((start_p(""62 1169 1173))(end_p(""62 1169 1177)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""62 1169 1179))(end_p(""62 1169 1180)))))))(position((start_p(""62 1169 1178))(end_p(""62 1169 1181)))))((value(Sequence(((value(Apply((value(Variable((value(Id print))(position((start_p(""63 1184 1188))(end_p(""63 1184 1193)))))()))(position((start_p(""63 1184 1188))(end_p(""63 1184 1193)))))((value(Variable((value(Id l))(position((start_p(""63 1184 1195))(end_p(""63 1184 1196)))))()))(position((start_p(""63 1184 1194))(end_p(""63 1184 1197)))))))(position((start_p(""63 1184 1188))(end_p(""63 1184 1197)))))((value(Variable((value(Id l))(position((start_p(""64 1199 1203))(end_p(""64 1199 1204)))))()))(position((start_p(""64 1199 1203))(end_p(""64 1199 1204))))))))(position((start_p(""63 1184 1188))(end_p(""64 1199 1204)))))))))))(position((start_p(""62 1169 1169))(end_p(""64 1199 1204)))))((value(DefineValue(RecFunctions((((value(Id generate))(position((start_p(""66 1206 1210))(end_p(""66 1206 1218)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id accu))(position((start_p(""66 1206 1220))(end_p(""66 1206 1224)))))))(position((start_p(""66 1206 1220))(end_p(""66 1206 1224)))))((value(PVariable((value(Id n))(position((start_p(""66 1206 1226))(end_p(""66 1206 1227)))))))(position((start_p(""66 1206 1226))(end_p(""66 1206 1227))))))))(position((start_p(""66 1206 1219))(end_p(""66 1206 1228)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""67 1231 1241))(end_p(""67 1231 1243)))))()))(position((start_p(""67 1231 1241))(end_p(""67 1231 1243)))))((value(Variable((value(Id n))(position((start_p(""67 1231 1239))(end_p(""67 1231 1240)))))()))(position((start_p(""67 1231 1239))(end_p(""67 1231 1240)))))))(position((start_p(""67 1231 1239))(end_p(""67 1231 1240)))))((value(Literal((value(LInt 0))(position((start_p(""67 1231 1244))(end_p(""67 1231 1245)))))))(position((start_p(""67 1231 1244))(end_p(""67 1231 1245)))))))(position((start_p(""67 1231 1238))(end_p(""67 1231 1246)))))((value(Variable((value(Id accu))(position((start_p(""67 1231 1254))(end_p(""67 1231 1258)))))()))(position((start_p(""67 1231 1254))(end_p(""67 1231 1258)))))((value(Apply((value(Variable((value(Id generate))(position((start_p(""67 1231 1268))(end_p(""67 1231 1276)))))()))(position((start_p(""67 1231 1268))(end_p(""67 1231 1276)))))((value(Tuple(((value(Tagged((value(KId C))(position((start_p(""67 1231 1278))(end_p(""67 1231 1279)))))()(((value(Variable((value(Id n))(position((start_p(""67 1231 1281))(end_p(""67 1231 1282)))))()))(position((start_p(""67 1231 1281))(end_p(""67 1231 1282)))))((value(Variable((value(Id accu))(position((start_p(""67 1231 1284))(end_p(""67 1231 1288)))))()))(position((start_p(""67 1231 1284))(end_p(""67 1231 1288))))))))(position((start_p(""67 1231 1278))(end_p(""67 1231 1289)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""67 1231 1293))(end_p(""67 1231 1294)))))()))(position((start_p(""67 1231 1293))(end_p(""67 1231 1294)))))((value(Variable((value(Id n))(position((start_p(""67 1231 1291))(end_p(""67 1231 1292)))))()))(position((start_p(""67 1231 1291))(end_p(""67 1231 1292)))))))(position((start_p(""67 1231 1291))(end_p(""67 1231 1292)))))((value(Literal((value(LInt 1))(position((start_p(""67 1231 1295))(end_p(""67 1231 1296)))))))(position((start_p(""67 1231 1295))(end_p(""67 1231 1296)))))))(position((start_p(""67 1231 1291))(end_p(""67 1231 1296))))))))(position((start_p(""67 1231 1277))(end_p(""67 1231 1297)))))))(position((start_p(""67 1231 1268))(end_p(""67 1231 1297)))))))(position((start_p(""67 1231 1235))(end_p(""67 1231 1299)))))))))))(position((start_p(""66 1206 1206))(end_p(""67 1231 1299)))))((value(DefineValue(SimpleValue(((value(Id r))(position((start_p(""69 1301 1305))(end_p(""69 1301 1306)))))()((value(Apply((value(Variable((value(Id sorted))(position((start_p(""70 1309 1311))(end_p(""70 1309 1317)))))()))(position((start_p(""70 1309 1311))(end_p(""70 1309 1317)))))((value(Apply((value(Variable((value(Id sort))(position((start_p(""70 1309 1319))(end_p(""70 1309 1323)))))()))(position((start_p(""70 1309 1319))(end_p(""70 1309 1323)))))((value(Apply((value(Variable((value(Id generate))(position((start_p(""70 1309 1325))(end_p(""70 1309 1333)))))()))(position((start_p(""70 1309 1325))(end_p(""70 1309 1333)))))((value(Tuple(((value(Tagged((value(KId N))(position((start_p(""70 1309 1335))(end_p(""70 1309 1336)))))()()))(position((start_p(""70 1309 1335))(end_p(""70 1309 1336)))))((value(Literal((value(LInt 500))(position((start_p(""70 1309 1338))(end_p(""70 1309 1341)))))))(position((start_p(""70 1309 1338))(end_p(""70 1309 1341))))))))(position((start_p(""70 1309 1334))(end_p(""70 1309 1342)))))))(position((start_p(""70 1309 1324))(end_p(""70 1309 1343)))))))(position((start_p(""70 1309 1318))(end_p(""70 1309 1344)))))))(position((start_p(""70 1309 1311))(end_p(""70 1309 1344)))))))))(position((start_p(""69 1301 1301))(end_p(""70 1309 1344)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""72 1346 1350))(end_p(""72 1346 1354)))))()((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""73 1357 1359))(end_p(""73 1357 1371)))))()))(position((start_p(""73 1357 1359))(end_p(""73 1357 1371)))))((value(Literal((value(LString"This test is "))(position((start_p(""73 1357 1387))(end_p(""73 1357 1388)))))))(position((start_p(""73 1357 1372))(end_p(""73 1357 1389)))))))(position((start_p(""73 1357 1359))(end_p(""73 1357 1389)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""74 1391 1393))(end_p(""74 1391 1405)))))()))(position((start_p(""74 1391 1393))(end_p(""74 1391 1405)))))((value(IfThenElse((value(Variable((value(Id r))(position((start_p(""74 1391 1411))(end_p(""74 1391 1412)))))()))(position((start_p(""74 1391 1410))(end_p(""74 1391 1413)))))((value(Literal((value(LString"OK!\n"))(position((start_p(""74 1391 1427))(end_p(""74 1391 1428)))))))(position((start_p(""74 1391 1427))(end_p(""74 1391 1428)))))((value(Literal((value(LString"KO!\n"))(position((start_p(""74 1391 1444))(end_p(""74 1391 1445)))))))(position((start_p(""74 1391 1444))(end_p(""74 1391 1445)))))))(position((start_p(""74 1391 1406))(end_p(""74 1391 1448)))))))(position((start_p(""74 1391 1393))(end_p(""74 1391 1448))))))))(position((start_p(""73 1357 1359))(end_p(""74 1391 1448)))))))))(position((start_p(""72 1346 1346))(end_p(""74 1391 1448)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/69-sort-big.eval.hopix.human-readable b/flap/tests/02-Interpreter/69-sort-big.eval.hopix.human-readable new file mode 100644 index 0000000..b41a271 --- /dev/null +++ b/flap/tests/02-Interpreter/69-sort-big.eval.hopix.human-readable @@ -0,0 +1,74 @@ +fun concat (l1, l2) = + match (l1) { + | N -> l2 + | C (x, xs) -> C (x, concat (xs, l2)) + } + +let l = C (1, C (2, N)) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) +let l = concat (l, l) + +fun len (l) = + match (l) { + | N -> 0 + | C (x, xs) -> 1 + len (xs) + } + +fun sorted (l) = + match (l) { + | N | C (_, N) -> true + | C (x, C (y, _) & l) -> x <=? y && sorted (l) + } + +let l2 = C (1, C (2, C (6, C (7, N)))) + +let l3 = C (-1, C (2, C (6, C (70, N)))) + +let l4 = C (-1, C (20, C (6, C (70, N)))) + +fun not (b) = if (b) then { false } else { true } + +fun sort (l) = + match (l) { + | N -> N + | C (x, xs) -> match (pivot (x, xs)) { + | (l1, l2) -> + let l1 = sort (l1); + let l2 = sort (l2); + concat (l1, C (x, l2)) + } + } +and pivot (x, l) = + match (l) { + | N -> + (N, N) + | C (y, ys) -> + match (pivot (x, ys)) { + | (l1, l2) -> + if (y >? x) then { (l1, C (y, l2)) } else { (C (y, l1), l2) } + } + } + +fun print (l) = + match (l) { + | N -> print_string ("\n") + | C (x, xs) -> print_int (x); print_string (" "); print (xs) + } + +fun show (l) = + print (l); + l + +fun generate (accu, n) = + if (n =? 0) then { accu } else { generate (C (n, accu), n - 1) } + +let r = + sorted (sort (generate (N, 500))) + +let test = + print_string ("This test is "); + print_string (if (r) then { "OK!\n" } else { "KO!\n" }) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/69-sort-big.expected b/flap/tests/02-Interpreter/69-sort-big.expected new file mode 100644 index 0000000..e930c03 --- /dev/null +++ b/flap/tests/02-Interpreter/69-sort-big.expected @@ -0,0 +1 @@ +This test is OK! diff --git a/flap/tests/02-Interpreter/70-tree.eval.hopix b/flap/tests/02-Interpreter/70-tree.eval.hopix new file mode 100644 index 0000000..ccb443b --- /dev/null +++ b/flap/tests/02-Interpreter/70-tree.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id make))(position((start_p(""1 0 4))(end_p(""1 0 8)))))()(FunctionDefinition((value(PVariable((value(Id n))(position((start_p(""1 0 10))(end_p(""1 0 11)))))))(position((start_p(""1 0 9))(end_p(""1 0 12)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""2 15 25))(end_p(""2 15 27)))))()))(position((start_p(""2 15 25))(end_p(""2 15 27)))))((value(Variable((value(Id n))(position((start_p(""2 15 23))(end_p(""2 15 24)))))()))(position((start_p(""2 15 23))(end_p(""2 15 24)))))))(position((start_p(""2 15 23))(end_p(""2 15 24)))))((value(Literal((value(LInt 0))(position((start_p(""2 15 28))(end_p(""2 15 29)))))))(position((start_p(""2 15 28))(end_p(""2 15 29)))))))(position((start_p(""2 15 22))(end_p(""2 15 30)))))((value(Tagged((value(KId Leaf))(position((start_p(""2 15 38))(end_p(""2 15 42)))))()()))(position((start_p(""2 15 38))(end_p(""2 15 42)))))((value(Tagged((value(KId Node))(position((start_p(""2 15 52))(end_p(""2 15 56)))))()(((value(Apply((value(Variable((value(Id make))(position((start_p(""2 15 58))(end_p(""2 15 62)))))()))(position((start_p(""2 15 58))(end_p(""2 15 62)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""2 15 66))(end_p(""2 15 67)))))()))(position((start_p(""2 15 66))(end_p(""2 15 67)))))((value(Variable((value(Id n))(position((start_p(""2 15 64))(end_p(""2 15 65)))))()))(position((start_p(""2 15 64))(end_p(""2 15 65)))))))(position((start_p(""2 15 64))(end_p(""2 15 65)))))((value(Literal((value(LInt 1))(position((start_p(""2 15 68))(end_p(""2 15 69)))))))(position((start_p(""2 15 68))(end_p(""2 15 69)))))))(position((start_p(""2 15 63))(end_p(""2 15 70)))))))(position((start_p(""2 15 58))(end_p(""2 15 70)))))((value(Apply((value(Variable((value(Id make))(position((start_p(""2 15 72))(end_p(""2 15 76)))))()))(position((start_p(""2 15 72))(end_p(""2 15 76)))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""2 15 80))(end_p(""2 15 81)))))()))(position((start_p(""2 15 80))(end_p(""2 15 81)))))((value(Variable((value(Id n))(position((start_p(""2 15 78))(end_p(""2 15 79)))))()))(position((start_p(""2 15 78))(end_p(""2 15 79)))))))(position((start_p(""2 15 78))(end_p(""2 15 79)))))((value(Literal((value(LInt 1))(position((start_p(""2 15 82))(end_p(""2 15 83)))))))(position((start_p(""2 15 82))(end_p(""2 15 83)))))))(position((start_p(""2 15 77))(end_p(""2 15 84)))))))(position((start_p(""2 15 72))(end_p(""2 15 84))))))))(position((start_p(""2 15 52))(end_p(""2 15 85)))))))(position((start_p(""2 15 19))(end_p(""2 15 87)))))))))))(position((start_p(""1 0 0))(end_p(""2 15 87)))))((value(DefineValue(RecFunctions((((value(Id count))(position((start_p(""4 89 93))(end_p(""4 89 98)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id accu))(position((start_p(""4 89 100))(end_p(""4 89 104)))))))(position((start_p(""4 89 100))(end_p(""4 89 104)))))((value(PVariable((value(Id t))(position((start_p(""4 89 106))(end_p(""4 89 107)))))))(position((start_p(""4 89 106))(end_p(""4 89 107))))))))(position((start_p(""4 89 99))(end_p(""4 89 108)))))((value(Case((value(Variable((value(Id t))(position((start_p(""5 111 122))(end_p(""5 111 123)))))()))(position((start_p(""5 111 122))(end_p(""5 111 123)))))(((value(Branch((value(PTaggedValue((value(KId Leaf))(position((start_p(""6 127 133))(end_p(""6 127 137)))))()()))(position((start_p(""6 127 133))(end_p(""6 127 137)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""6 127 143))(end_p(""6 127 144)))))()))(position((start_p(""6 127 143))(end_p(""6 127 144)))))((value(Literal((value(LInt 1))(position((start_p(""6 127 141))(end_p(""6 127 142)))))))(position((start_p(""6 127 141))(end_p(""6 127 142)))))))(position((start_p(""6 127 141))(end_p(""6 127 142)))))((value(Variable((value(Id accu))(position((start_p(""6 127 145))(end_p(""6 127 149)))))()))(position((start_p(""6 127 145))(end_p(""6 127 149)))))))(position((start_p(""6 127 141))(end_p(""6 127 149)))))))(position((start_p(""6 127 133))(end_p(""6 127 149)))))((value(Branch((value(PTaggedValue((value(KId Node))(position((start_p(""7 150 156))(end_p(""7 150 160)))))()(((value(PVariable((value(Id l))(position((start_p(""7 150 162))(end_p(""7 150 163)))))))(position((start_p(""7 150 162))(end_p(""7 150 163)))))((value(PVariable((value(Id r))(position((start_p(""7 150 165))(end_p(""7 150 166)))))))(position((start_p(""7 150 165))(end_p(""7 150 166))))))))(position((start_p(""7 150 156))(end_p(""7 150 167)))))((value(Apply((value(Variable((value(Id count))(position((start_p(""7 150 171))(end_p(""7 150 176)))))()))(position((start_p(""7 150 171))(end_p(""7 150 176)))))((value(Tuple(((value(Apply((value(Variable((value(Id count))(position((start_p(""7 150 178))(end_p(""7 150 183)))))()))(position((start_p(""7 150 178))(end_p(""7 150 183)))))((value(Tuple(((value(Variable((value(Id accu))(position((start_p(""7 150 185))(end_p(""7 150 189)))))()))(position((start_p(""7 150 185))(end_p(""7 150 189)))))((value(Variable((value(Id l))(position((start_p(""7 150 191))(end_p(""7 150 192)))))()))(position((start_p(""7 150 191))(end_p(""7 150 192))))))))(position((start_p(""7 150 184))(end_p(""7 150 193)))))))(position((start_p(""7 150 178))(end_p(""7 150 193)))))((value(Variable((value(Id r))(position((start_p(""7 150 195))(end_p(""7 150 196)))))()))(position((start_p(""7 150 195))(end_p(""7 150 196))))))))(position((start_p(""7 150 177))(end_p(""7 150 197)))))))(position((start_p(""7 150 171))(end_p(""7 150 197)))))))(position((start_p(""7 150 156))(end_p(""7 150 197))))))))(position((start_p(""5 111 115))(end_p(""8 198 203)))))))))))(position((start_p(""4 89 89))(end_p(""8 198 203)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""10 205 209))(end_p(""10 205 213)))))()((value(For((value(Id i))(position((start_p(""11 216 224))(end_p(""11 216 225)))))((value(Literal((value(LInt 0))(position((start_p(""11 216 232))(end_p(""11 216 233)))))))(position((start_p(""11 216 232))(end_p(""11 216 233)))))((value(Literal((value(LInt 14))(position((start_p(""11 216 239))(end_p(""11 216 241)))))))(position((start_p(""11 216 239))(end_p(""11 216 241)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""12 245 253))(end_p(""12 245 262)))))()))(position((start_p(""12 245 253))(end_p(""12 245 262)))))((value(Apply((value(Variable((value(Id count))(position((start_p(""12 245 264))(end_p(""12 245 269)))))()))(position((start_p(""12 245 264))(end_p(""12 245 269)))))((value(Tuple(((value(Literal((value(LInt 0))(position((start_p(""12 245 271))(end_p(""12 245 272)))))))(position((start_p(""12 245 271))(end_p(""12 245 272)))))((value(Apply((value(Variable((value(Id make))(position((start_p(""12 245 274))(end_p(""12 245 278)))))()))(position((start_p(""12 245 274))(end_p(""12 245 278)))))((value(Variable((value(Id i))(position((start_p(""12 245 280))(end_p(""12 245 281)))))()))(position((start_p(""12 245 279))(end_p(""12 245 282)))))))(position((start_p(""12 245 274))(end_p(""12 245 282))))))))(position((start_p(""12 245 270))(end_p(""12 245 283)))))))(position((start_p(""12 245 263))(end_p(""12 245 284)))))))(position((start_p(""12 245 253))(end_p(""12 245 284)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""13 286 294))(end_p(""13 286 306)))))()))(position((start_p(""13 286 294))(end_p(""13 286 306)))))((value(Literal((value(LString"\n"))(position((start_p(""13 286 311))(end_p(""13 286 312)))))))(position((start_p(""13 286 307))(end_p(""13 286 313)))))))(position((start_p(""13 286 294))(end_p(""13 286 313))))))))(position((start_p(""12 245 253))(end_p(""13 286 313)))))))(position((start_p(""11 216 220))(end_p(""14 314 319)))))))))(position((start_p(""10 205 205))(end_p(""14 314 319)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/70-tree.eval.hopix.human-readable b/flap/tests/02-Interpreter/70-tree.eval.hopix.human-readable new file mode 100644 index 0000000..0276c64 --- /dev/null +++ b/flap/tests/02-Interpreter/70-tree.eval.hopix.human-readable @@ -0,0 +1,14 @@ +fun make (n) = + if (n =? 0) then { Leaf } else { Node (make (n - 1), make (n - 1)) } + +fun count (accu, t) = + match (t) { + | Leaf -> 1 + accu + | Node (l, r) -> count (count (accu, l), r) + } + +let test = + for i from (0) to (14) { + print_int (count (0, make (i))); + print_string ("\n") + } \ No newline at end of file diff --git a/flap/tests/02-Interpreter/70-tree.expected b/flap/tests/02-Interpreter/70-tree.expected new file mode 100644 index 0000000..d1382b3 --- /dev/null +++ b/flap/tests/02-Interpreter/70-tree.expected @@ -0,0 +1,15 @@ +1 +2 +4 +8 +16 +32 +64 +128 +256 +512 +1024 +2048 +4096 +8192 +16384 diff --git a/flap/tests/02-Interpreter/71-list-monad.eval.hopix b/flap/tests/02-Interpreter/71-list-monad.eval.hopix new file mode 100644 index 0000000..203976e --- /dev/null +++ b/flap/tests/02-Interpreter/71-list-monad.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id map))(position((start_p(""1 0 4))(end_p(""1 0 7)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id f))(position((start_p(""1 0 9))(end_p(""1 0 10)))))))(position((start_p(""1 0 9))(end_p(""1 0 10)))))((value(PVariable((value(Id l))(position((start_p(""1 0 12))(end_p(""1 0 13)))))))(position((start_p(""1 0 12))(end_p(""1 0 13))))))))(position((start_p(""1 0 8))(end_p(""1 0 14)))))((value(Case((value(Variable((value(Id l))(position((start_p(""2 17 28))(end_p(""2 17 29)))))()))(position((start_p(""2 17 28))(end_p(""2 17 29)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""2 17 33))(end_p(""2 17 34)))))()()))(position((start_p(""2 17 33))(end_p(""2 17 34)))))((value(Tagged((value(KId N))(position((start_p(""2 17 38))(end_p(""2 17 39)))))()()))(position((start_p(""2 17 38))(end_p(""2 17 39)))))))(position((start_p(""2 17 33))(end_p(""2 17 39)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""2 17 42))(end_p(""2 17 43)))))()(((value(PVariable((value(Id x))(position((start_p(""2 17 45))(end_p(""2 17 46)))))))(position((start_p(""2 17 45))(end_p(""2 17 46)))))((value(PVariable((value(Id xs))(position((start_p(""2 17 48))(end_p(""2 17 50)))))))(position((start_p(""2 17 48))(end_p(""2 17 50))))))))(position((start_p(""2 17 42))(end_p(""2 17 51)))))((value(Tagged((value(KId C))(position((start_p(""2 17 55))(end_p(""2 17 56)))))()(((value(Apply((value(Variable((value(Id f))(position((start_p(""2 17 58))(end_p(""2 17 59)))))()))(position((start_p(""2 17 58))(end_p(""2 17 59)))))((value(Variable((value(Id x))(position((start_p(""2 17 61))(end_p(""2 17 62)))))()))(position((start_p(""2 17 60))(end_p(""2 17 63)))))))(position((start_p(""2 17 58))(end_p(""2 17 63)))))((value(Apply((value(Variable((value(Id map))(position((start_p(""2 17 65))(end_p(""2 17 68)))))()))(position((start_p(""2 17 65))(end_p(""2 17 68)))))((value(Tuple(((value(Variable((value(Id f))(position((start_p(""2 17 70))(end_p(""2 17 71)))))()))(position((start_p(""2 17 70))(end_p(""2 17 71)))))((value(Variable((value(Id xs))(position((start_p(""2 17 73))(end_p(""2 17 75)))))()))(position((start_p(""2 17 73))(end_p(""2 17 75))))))))(position((start_p(""2 17 69))(end_p(""2 17 76)))))))(position((start_p(""2 17 65))(end_p(""2 17 76))))))))(position((start_p(""2 17 55))(end_p(""2 17 77)))))))(position((start_p(""2 17 42))(end_p(""2 17 77))))))))(position((start_p(""2 17 21))(end_p(""2 17 79)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 79)))))((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""4 81 85))(end_p(""4 81 91)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id l1))(position((start_p(""4 81 93))(end_p(""4 81 95)))))))(position((start_p(""4 81 93))(end_p(""4 81 95)))))((value(PVariable((value(Id l2))(position((start_p(""4 81 97))(end_p(""4 81 99)))))))(position((start_p(""4 81 97))(end_p(""4 81 99))))))))(position((start_p(""4 81 92))(end_p(""4 81 100)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""5 103 114))(end_p(""5 103 116)))))()))(position((start_p(""5 103 114))(end_p(""5 103 116)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""5 103 120))(end_p(""5 103 121)))))()()))(position((start_p(""5 103 120))(end_p(""5 103 121)))))((value(Variable((value(Id l2))(position((start_p(""5 103 125))(end_p(""5 103 127)))))()))(position((start_p(""5 103 125))(end_p(""5 103 127)))))))(position((start_p(""5 103 120))(end_p(""5 103 127)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""5 103 130))(end_p(""5 103 131)))))()(((value(PVariable((value(Id x))(position((start_p(""5 103 133))(end_p(""5 103 134)))))))(position((start_p(""5 103 133))(end_p(""5 103 134)))))((value(PVariable((value(Id xs))(position((start_p(""5 103 136))(end_p(""5 103 138)))))))(position((start_p(""5 103 136))(end_p(""5 103 138))))))))(position((start_p(""5 103 130))(end_p(""5 103 139)))))((value(Tagged((value(KId C))(position((start_p(""5 103 143))(end_p(""5 103 144)))))()(((value(Variable((value(Id x))(position((start_p(""5 103 146))(end_p(""5 103 147)))))()))(position((start_p(""5 103 146))(end_p(""5 103 147)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""5 103 149))(end_p(""5 103 155)))))()))(position((start_p(""5 103 149))(end_p(""5 103 155)))))((value(Tuple(((value(Variable((value(Id xs))(position((start_p(""5 103 157))(end_p(""5 103 159)))))()))(position((start_p(""5 103 157))(end_p(""5 103 159)))))((value(Variable((value(Id l2))(position((start_p(""5 103 161))(end_p(""5 103 163)))))()))(position((start_p(""5 103 161))(end_p(""5 103 163))))))))(position((start_p(""5 103 156))(end_p(""5 103 164)))))))(position((start_p(""5 103 149))(end_p(""5 103 164))))))))(position((start_p(""5 103 143))(end_p(""5 103 165)))))))(position((start_p(""5 103 130))(end_p(""5 103 165))))))))(position((start_p(""5 103 107))(end_p(""5 103 167)))))))))))(position((start_p(""4 81 81))(end_p(""5 103 167)))))((value(DefineValue(RecFunctions((((value(Id flatten))(position((start_p(""7 169 173))(end_p(""7 169 180)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""7 169 182))(end_p(""7 169 183)))))))(position((start_p(""7 169 181))(end_p(""7 169 184)))))((value(Case((value(Variable((value(Id l))(position((start_p(""8 187 198))(end_p(""8 187 199)))))()))(position((start_p(""8 187 198))(end_p(""8 187 199)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""8 187 203))(end_p(""8 187 204)))))()()))(position((start_p(""8 187 203))(end_p(""8 187 204)))))((value(Tagged((value(KId N))(position((start_p(""8 187 208))(end_p(""8 187 209)))))()()))(position((start_p(""8 187 208))(end_p(""8 187 209)))))))(position((start_p(""8 187 203))(end_p(""8 187 209)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""8 187 212))(end_p(""8 187 213)))))()(((value(PVariable((value(Id l))(position((start_p(""8 187 215))(end_p(""8 187 216)))))))(position((start_p(""8 187 215))(end_p(""8 187 216)))))((value(PVariable((value(Id ls))(position((start_p(""8 187 218))(end_p(""8 187 220)))))))(position((start_p(""8 187 218))(end_p(""8 187 220))))))))(position((start_p(""8 187 212))(end_p(""8 187 221)))))((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 187 225))(end_p(""8 187 231)))))()))(position((start_p(""8 187 225))(end_p(""8 187 231)))))((value(Tuple(((value(Variable((value(Id l))(position((start_p(""8 187 233))(end_p(""8 187 234)))))()))(position((start_p(""8 187 233))(end_p(""8 187 234)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""8 187 236))(end_p(""8 187 243)))))()))(position((start_p(""8 187 236))(end_p(""8 187 243)))))((value(Variable((value(Id ls))(position((start_p(""8 187 245))(end_p(""8 187 247)))))()))(position((start_p(""8 187 244))(end_p(""8 187 248)))))))(position((start_p(""8 187 236))(end_p(""8 187 248))))))))(position((start_p(""8 187 232))(end_p(""8 187 249)))))))(position((start_p(""8 187 225))(end_p(""8 187 249)))))))(position((start_p(""8 187 212))(end_p(""8 187 249))))))))(position((start_p(""8 187 191))(end_p(""8 187 251)))))))))))(position((start_p(""7 169 169))(end_p(""8 187 251)))))((value(DefineValue(RecFunctions((((value(Id return))(position((start_p(""10 253 257))(end_p(""10 253 263)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""10 253 265))(end_p(""10 253 266)))))))(position((start_p(""10 253 264))(end_p(""10 253 267)))))((value(Tagged((value(KId C))(position((start_p(""10 253 270))(end_p(""10 253 271)))))()(((value(Variable((value(Id x))(position((start_p(""10 253 273))(end_p(""10 253 274)))))()))(position((start_p(""10 253 273))(end_p(""10 253 274)))))((value(Tagged((value(KId N))(position((start_p(""10 253 276))(end_p(""10 253 277)))))()()))(position((start_p(""10 253 276))(end_p(""10 253 277))))))))(position((start_p(""10 253 270))(end_p(""10 253 278)))))))))))(position((start_p(""10 253 253))(end_p(""10 253 278)))))((value(DefineValue(RecFunctions((((value(Id bind))(position((start_p(""12 280 284))(end_p(""12 280 288)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""12 280 290))(end_p(""12 280 291)))))))(position((start_p(""12 280 290))(end_p(""12 280 291)))))((value(PVariable((value(Id f))(position((start_p(""12 280 293))(end_p(""12 280 294)))))))(position((start_p(""12 280 293))(end_p(""12 280 294))))))))(position((start_p(""12 280 289))(end_p(""12 280 295)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""12 280 298))(end_p(""12 280 305)))))()))(position((start_p(""12 280 298))(end_p(""12 280 305)))))((value(Apply((value(Variable((value(Id map))(position((start_p(""12 280 307))(end_p(""12 280 310)))))()))(position((start_p(""12 280 307))(end_p(""12 280 310)))))((value(Tuple(((value(Variable((value(Id f))(position((start_p(""12 280 312))(end_p(""12 280 313)))))()))(position((start_p(""12 280 312))(end_p(""12 280 313)))))((value(Variable((value(Id x))(position((start_p(""12 280 315))(end_p(""12 280 316)))))()))(position((start_p(""12 280 315))(end_p(""12 280 316))))))))(position((start_p(""12 280 311))(end_p(""12 280 317)))))))(position((start_p(""12 280 306))(end_p(""12 280 318)))))))(position((start_p(""12 280 298))(end_p(""12 280 318)))))))))))(position((start_p(""12 280 280))(end_p(""12 280 318)))))((value(DefineValue(SimpleValue(((value(Id fail))(position((start_p(""14 320 324))(end_p(""14 320 328)))))()((value(Tagged((value(KId N))(position((start_p(""14 320 331))(end_p(""14 320 332)))))()()))(position((start_p(""14 320 331))(end_p(""14 320 332)))))))))(position((start_p(""14 320 320))(end_p(""14 320 332)))))((value(DefineValue(RecFunctions((((value(Id some))(position((start_p(""16 334 338))(end_p(""16 334 342)))))()(FunctionDefinition((value(PVariable((value(Id d))(position((start_p(""16 334 343))(end_p(""16 334 344)))))))(position((start_p(""16 334 343))(end_p(""16 334 344)))))((value(Tagged((value(KId C))(position((start_p(""16 334 347))(end_p(""16 334 348)))))()(((value(Variable((value(Id d))(position((start_p(""16 334 350))(end_p(""16 334 351)))))()))(position((start_p(""16 334 350))(end_p(""16 334 351)))))((value(Tagged((value(KId N))(position((start_p(""16 334 353))(end_p(""16 334 354)))))()()))(position((start_p(""16 334 353))(end_p(""16 334 354))))))))(position((start_p(""16 334 347))(end_p(""16 334 355)))))))))))(position((start_p(""16 334 334))(end_p(""16 334 355)))))((value(DefineValue(RecFunctions((((value(Id range))(position((start_p(""18 357 361))(end_p(""18 357 366)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id start))(position((start_p(""18 357 368))(end_p(""18 357 373)))))))(position((start_p(""18 357 368))(end_p(""18 357 373)))))((value(PVariable((value(Id stop))(position((start_p(""18 357 375))(end_p(""18 357 379)))))))(position((start_p(""18 357 375))(end_p(""18 357 379))))))))(position((start_p(""18 357 367))(end_p(""18 357 380)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""19 383 397))(end_p(""19 383 399)))))()))(position((start_p(""19 383 397))(end_p(""19 383 399)))))((value(Variable((value(Id start))(position((start_p(""19 383 391))(end_p(""19 383 396)))))()))(position((start_p(""19 383 391))(end_p(""19 383 396)))))))(position((start_p(""19 383 391))(end_p(""19 383 396)))))((value(Variable((value(Id stop))(position((start_p(""19 383 400))(end_p(""19 383 404)))))()))(position((start_p(""19 383 400))(end_p(""19 383 404)))))))(position((start_p(""19 383 390))(end_p(""19 383 405)))))((value(Tagged((value(KId N))(position((start_p(""19 383 413))(end_p(""19 383 414)))))()()))(position((start_p(""19 383 413))(end_p(""19 383 414)))))((value(Tagged((value(KId C))(position((start_p(""19 383 424))(end_p(""19 383 425)))))()(((value(Variable((value(Id start))(position((start_p(""19 383 427))(end_p(""19 383 432)))))()))(position((start_p(""19 383 427))(end_p(""19 383 432)))))((value(Apply((value(Variable((value(Id range))(position((start_p(""19 383 434))(end_p(""19 383 439)))))()))(position((start_p(""19 383 434))(end_p(""19 383 439)))))((value(Tuple(((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""19 383 447))(end_p(""19 383 448)))))()))(position((start_p(""19 383 447))(end_p(""19 383 448)))))((value(Variable((value(Id start))(position((start_p(""19 383 441))(end_p(""19 383 446)))))()))(position((start_p(""19 383 441))(end_p(""19 383 446)))))))(position((start_p(""19 383 441))(end_p(""19 383 446)))))((value(Literal((value(LInt 1))(position((start_p(""19 383 449))(end_p(""19 383 450)))))))(position((start_p(""19 383 449))(end_p(""19 383 450)))))))(position((start_p(""19 383 441))(end_p(""19 383 450)))))((value(Variable((value(Id stop))(position((start_p(""19 383 452))(end_p(""19 383 456)))))()))(position((start_p(""19 383 452))(end_p(""19 383 456))))))))(position((start_p(""19 383 440))(end_p(""19 383 457)))))))(position((start_p(""19 383 434))(end_p(""19 383 457))))))))(position((start_p(""19 383 424))(end_p(""19 383 458)))))))(position((start_p(""19 383 387))(end_p(""19 383 460)))))))))))(position((start_p(""18 357 357))(end_p(""19 383 460)))))((value(DefineValue(RecFunctions((((value(Id all_sums))(position((start_p(""21 462 466))(end_p(""21 462 474)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id start))(position((start_p(""21 462 476))(end_p(""21 462 481)))))))(position((start_p(""21 462 476))(end_p(""21 462 481)))))((value(PVariable((value(Id stop))(position((start_p(""21 462 483))(end_p(""21 462 487)))))))(position((start_p(""21 462 483))(end_p(""21 462 487)))))((value(PVariable((value(Id n))(position((start_p(""21 462 489))(end_p(""21 462 490)))))))(position((start_p(""21 462 489))(end_p(""21 462 490))))))))(position((start_p(""21 462 475))(end_p(""21 462 491)))))((value(Apply((value(Variable((value(Id bind))(position((start_p(""22 494 498))(end_p(""22 494 502)))))()))(position((start_p(""22 494 498))(end_p(""22 494 502)))))((value(Tuple(((value(Apply((value(Variable((value(Id range))(position((start_p(""22 494 504))(end_p(""22 494 509)))))()))(position((start_p(""22 494 504))(end_p(""22 494 509)))))((value(Tuple(((value(Variable((value(Id start))(position((start_p(""22 494 511))(end_p(""22 494 516)))))()))(position((start_p(""22 494 511))(end_p(""22 494 516)))))((value(Variable((value(Id stop))(position((start_p(""22 494 518))(end_p(""22 494 522)))))()))(position((start_p(""22 494 518))(end_p(""22 494 522))))))))(position((start_p(""22 494 510))(end_p(""22 494 523)))))))(position((start_p(""22 494 504))(end_p(""22 494 523)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""22 494 526))(end_p(""22 494 527)))))))(position((start_p(""22 494 526))(end_p(""22 494 527)))))((value(Apply((value(Variable((value(Id bind))(position((start_p(""23 531 535))(end_p(""23 531 539)))))()))(position((start_p(""23 531 535))(end_p(""23 531 539)))))((value(Tuple(((value(Apply((value(Variable((value(Id range))(position((start_p(""23 531 541))(end_p(""23 531 546)))))()))(position((start_p(""23 531 541))(end_p(""23 531 546)))))((value(Tuple(((value(Variable((value(Id start))(position((start_p(""23 531 548))(end_p(""23 531 553)))))()))(position((start_p(""23 531 548))(end_p(""23 531 553)))))((value(Variable((value(Id stop))(position((start_p(""23 531 555))(end_p(""23 531 559)))))()))(position((start_p(""23 531 555))(end_p(""23 531 559))))))))(position((start_p(""23 531 547))(end_p(""23 531 560)))))))(position((start_p(""23 531 541))(end_p(""23 531 560)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id y))(position((start_p(""23 531 563))(end_p(""23 531 564)))))))(position((start_p(""23 531 563))(end_p(""23 531 564)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""24 568 582))(end_p(""24 568 584)))))()))(position((start_p(""24 568 582))(end_p(""24 568 584)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""24 568 578))(end_p(""24 568 579)))))()))(position((start_p(""24 568 578))(end_p(""24 568 579)))))((value(Variable((value(Id x))(position((start_p(""24 568 576))(end_p(""24 568 577)))))()))(position((start_p(""24 568 576))(end_p(""24 568 577)))))))(position((start_p(""24 568 576))(end_p(""24 568 577)))))((value(Variable((value(Id y))(position((start_p(""24 568 580))(end_p(""24 568 581)))))()))(position((start_p(""24 568 580))(end_p(""24 568 581)))))))(position((start_p(""24 568 576))(end_p(""24 568 581)))))))(position((start_p(""24 568 576))(end_p(""24 568 581)))))((value(Variable((value(Id n))(position((start_p(""24 568 585))(end_p(""24 568 586)))))()))(position((start_p(""24 568 585))(end_p(""24 568 586)))))))(position((start_p(""24 568 575))(end_p(""24 568 587)))))((value(Apply((value(Variable((value(Id return))(position((start_p(""24 568 595))(end_p(""24 568 601)))))()))(position((start_p(""24 568 595))(end_p(""24 568 601)))))((value(Apply((value(Variable((value(Id some))(position((start_p(""24 568 603))(end_p(""24 568 607)))))()))(position((start_p(""24 568 603))(end_p(""24 568 607)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""24 568 609))(end_p(""24 568 610)))))()))(position((start_p(""24 568 609))(end_p(""24 568 610)))))((value(Variable((value(Id y))(position((start_p(""24 568 612))(end_p(""24 568 613)))))()))(position((start_p(""24 568 612))(end_p(""24 568 613)))))((value(Variable((value(Id n))(position((start_p(""24 568 615))(end_p(""24 568 616)))))()))(position((start_p(""24 568 615))(end_p(""24 568 616))))))))(position((start_p(""24 568 608))(end_p(""24 568 617)))))))(position((start_p(""24 568 602))(end_p(""24 568 618)))))))(position((start_p(""24 568 595))(end_p(""24 568 618)))))((value(Variable((value(Id fail))(position((start_p(""24 568 628))(end_p(""24 568 632)))))()))(position((start_p(""24 568 628))(end_p(""24 568 632)))))))(position((start_p(""24 568 572))(end_p(""24 568 634))))))))(position((start_p(""23 531 562))(end_p(""24 568 634))))))))(position((start_p(""23 531 540))(end_p(""25 635 640)))))))(position((start_p(""23 531 535))(end_p(""25 635 640))))))))(position((start_p(""22 494 525))(end_p(""25 635 640))))))))(position((start_p(""22 494 503))(end_p(""25 635 641)))))))(position((start_p(""22 494 498))(end_p(""25 635 641)))))))))))(position((start_p(""21 462 462))(end_p(""25 635 641)))))((value(DefineValue(RecFunctions((((value(Id show_sum))(position((start_p(""27 643 647))(end_p(""27 643 655)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""27 643 657))(end_p(""27 643 658)))))))(position((start_p(""27 643 657))(end_p(""27 643 658)))))((value(PVariable((value(Id y))(position((start_p(""27 643 660))(end_p(""27 643 661)))))))(position((start_p(""27 643 660))(end_p(""27 643 661)))))((value(PVariable((value(Id n))(position((start_p(""27 643 663))(end_p(""27 643 664)))))))(position((start_p(""27 643 663))(end_p(""27 643 664))))))))(position((start_p(""27 643 656))(end_p(""27 643 665)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""28 668 672))(end_p(""28 668 681)))))()))(position((start_p(""28 668 672))(end_p(""28 668 681)))))((value(Variable((value(Id x))(position((start_p(""28 668 683))(end_p(""28 668 684)))))()))(position((start_p(""28 668 682))(end_p(""28 668 685)))))))(position((start_p(""28 668 672))(end_p(""28 668 685)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""29 687 691))(end_p(""29 687 703)))))()))(position((start_p(""29 687 691))(end_p(""29 687 703)))))((value(Literal((value(LString" + "))(position((start_p(""29 687 709))(end_p(""29 687 710)))))))(position((start_p(""29 687 704))(end_p(""29 687 711)))))))(position((start_p(""29 687 691))(end_p(""29 687 711)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""30 713 717))(end_p(""30 713 726)))))()))(position((start_p(""30 713 717))(end_p(""30 713 726)))))((value(Variable((value(Id y))(position((start_p(""30 713 728))(end_p(""30 713 729)))))()))(position((start_p(""30 713 727))(end_p(""30 713 730)))))))(position((start_p(""30 713 717))(end_p(""30 713 730)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""31 732 736))(end_p(""31 732 748)))))()))(position((start_p(""31 732 736))(end_p(""31 732 748)))))((value(Literal((value(LString" = "))(position((start_p(""31 732 754))(end_p(""31 732 755)))))))(position((start_p(""31 732 749))(end_p(""31 732 756)))))))(position((start_p(""31 732 736))(end_p(""31 732 756)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""32 758 762))(end_p(""32 758 771)))))()))(position((start_p(""32 758 762))(end_p(""32 758 771)))))((value(Variable((value(Id n))(position((start_p(""32 758 773))(end_p(""32 758 774)))))()))(position((start_p(""32 758 772))(end_p(""32 758 775)))))))(position((start_p(""32 758 762))(end_p(""32 758 775)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""33 777 781))(end_p(""33 777 793)))))()))(position((start_p(""33 777 781))(end_p(""33 777 793)))))((value(Literal((value(LString"\n"))(position((start_p(""33 777 798))(end_p(""33 777 799)))))))(position((start_p(""33 777 794))(end_p(""33 777 800)))))))(position((start_p(""33 777 781))(end_p(""33 777 800))))))))(position((start_p(""32 758 762))(end_p(""33 777 800))))))))(position((start_p(""31 732 736))(end_p(""33 777 800))))))))(position((start_p(""30 713 717))(end_p(""33 777 800))))))))(position((start_p(""29 687 691))(end_p(""33 777 800))))))))(position((start_p(""28 668 672))(end_p(""33 777 800)))))))))))(position((start_p(""27 643 643))(end_p(""33 777 800)))))((value(DefineValue(RecFunctions((((value(Id iter))(position((start_p(""35 802 806))(end_p(""35 802 810)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id f))(position((start_p(""35 802 812))(end_p(""35 802 813)))))))(position((start_p(""35 802 812))(end_p(""35 802 813)))))((value(PVariable((value(Id l))(position((start_p(""35 802 815))(end_p(""35 802 816)))))))(position((start_p(""35 802 815))(end_p(""35 802 816))))))))(position((start_p(""35 802 811))(end_p(""35 802 817)))))((value(Case((value(Variable((value(Id l))(position((start_p(""36 820 831))(end_p(""36 820 832)))))()))(position((start_p(""36 820 831))(end_p(""36 820 832)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""36 820 836))(end_p(""36 820 837)))))()()))(position((start_p(""36 820 836))(end_p(""36 820 837)))))((value(Variable((value(Id nothing))(position((start_p(""36 820 841))(end_p(""36 820 848)))))()))(position((start_p(""36 820 841))(end_p(""36 820 848)))))))(position((start_p(""36 820 836))(end_p(""36 820 848)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""36 820 851))(end_p(""36 820 852)))))()(((value(PVariable((value(Id x))(position((start_p(""36 820 854))(end_p(""36 820 855)))))))(position((start_p(""36 820 854))(end_p(""36 820 855)))))((value(PVariable((value(Id xs))(position((start_p(""36 820 857))(end_p(""36 820 859)))))))(position((start_p(""36 820 857))(end_p(""36 820 859))))))))(position((start_p(""36 820 851))(end_p(""36 820 860)))))((value(Sequence(((value(Apply((value(Variable((value(Id f))(position((start_p(""36 820 864))(end_p(""36 820 865)))))()))(position((start_p(""36 820 864))(end_p(""36 820 865)))))((value(Variable((value(Id x))(position((start_p(""36 820 867))(end_p(""36 820 868)))))()))(position((start_p(""36 820 866))(end_p(""36 820 869)))))))(position((start_p(""36 820 864))(end_p(""36 820 869)))))((value(Apply((value(Variable((value(Id iter))(position((start_p(""36 820 871))(end_p(""36 820 875)))))()))(position((start_p(""36 820 871))(end_p(""36 820 875)))))((value(Tuple(((value(Variable((value(Id f))(position((start_p(""36 820 877))(end_p(""36 820 878)))))()))(position((start_p(""36 820 877))(end_p(""36 820 878)))))((value(Variable((value(Id xs))(position((start_p(""36 820 880))(end_p(""36 820 882)))))()))(position((start_p(""36 820 880))(end_p(""36 820 882))))))))(position((start_p(""36 820 876))(end_p(""36 820 883)))))))(position((start_p(""36 820 871))(end_p(""36 820 883))))))))(position((start_p(""36 820 864))(end_p(""36 820 883)))))))(position((start_p(""36 820 851))(end_p(""36 820 883))))))))(position((start_p(""36 820 824))(end_p(""36 820 885)))))))))))(position((start_p(""35 802 802))(end_p(""36 820 885)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""38 887 891))(end_p(""38 887 895)))))()((value(Apply((value(Variable((value(Id iter))(position((start_p(""39 898 902))(end_p(""39 898 906)))))()))(position((start_p(""39 898 902))(end_p(""39 898 906)))))((value(Tuple(((value(Variable((value(Id show_sum))(position((start_p(""39 898 908))(end_p(""39 898 916)))))()))(position((start_p(""39 898 908))(end_p(""39 898 916)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""39 898 918))(end_p(""39 898 925)))))()))(position((start_p(""39 898 918))(end_p(""39 898 925)))))((value(Apply((value(Variable((value(Id all_sums))(position((start_p(""39 898 927))(end_p(""39 898 935)))))()))(position((start_p(""39 898 927))(end_p(""39 898 935)))))((value(Tuple(((value(Literal((value(LInt 13))(position((start_p(""39 898 937))(end_p(""39 898 939)))))))(position((start_p(""39 898 937))(end_p(""39 898 939)))))((value(Literal((value(LInt 73))(position((start_p(""39 898 941))(end_p(""39 898 943)))))))(position((start_p(""39 898 941))(end_p(""39 898 943)))))((value(Literal((value(LInt 73))(position((start_p(""39 898 945))(end_p(""39 898 947)))))))(position((start_p(""39 898 945))(end_p(""39 898 947))))))))(position((start_p(""39 898 936))(end_p(""39 898 948)))))))(position((start_p(""39 898 926))(end_p(""39 898 949)))))))(position((start_p(""39 898 918))(end_p(""39 898 949))))))))(position((start_p(""39 898 907))(end_p(""39 898 950)))))))(position((start_p(""39 898 902))(end_p(""39 898 950)))))))))(position((start_p(""38 887 887))(end_p(""39 898 950)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/71-list-monad.eval.hopix.human-readable b/flap/tests/02-Interpreter/71-list-monad.eval.hopix.human-readable new file mode 100644 index 0000000..3938f61 --- /dev/null +++ b/flap/tests/02-Interpreter/71-list-monad.eval.hopix.human-readable @@ -0,0 +1,39 @@ +fun map (f, l) = + match (l) { N -> N | C (x, xs) -> C (f (x), map (f, xs)) } + +fun concat (l1, l2) = + match (l1) { N -> l2 | C (x, xs) -> C (x, concat (xs, l2)) } + +fun flatten (l) = + match (l) { N -> N | C (l, ls) -> concat (l, flatten (ls)) } + +fun return (x) = C (x, N) + +fun bind (x, f) = flatten (map (f, x)) + +let fail = N + +fun some d = C (d, N) + +fun range (start, stop) = + if (start >? stop) then { N } else { C (start, range (start + 1, stop)) } + +fun all_sums (start, stop, n) = + bind (range (start, stop), \x -> + bind (range (start, stop), \y -> + if (x + y =? n) then { return (some (x, y, n)) } else { fail } + )) + +fun show_sum (x, y, n) = + print_int (x); + print_string (" + "); + print_int (y); + print_string (" = "); + print_int (n); + print_string ("\n") + +fun iter (f, l) = + match (l) { N -> nothing | C (x, xs) -> f (x); iter (f, xs) } + +let test = + iter (show_sum, flatten (all_sums (13, 73, 73))) diff --git a/flap/tests/02-Interpreter/71-list-monad.expected b/flap/tests/02-Interpreter/71-list-monad.expected new file mode 100644 index 0000000..0d86eda --- /dev/null +++ b/flap/tests/02-Interpreter/71-list-monad.expected @@ -0,0 +1,48 @@ +13 + 60 = 73 +14 + 59 = 73 +15 + 58 = 73 +16 + 57 = 73 +17 + 56 = 73 +18 + 55 = 73 +19 + 54 = 73 +20 + 53 = 73 +21 + 52 = 73 +22 + 51 = 73 +23 + 50 = 73 +24 + 49 = 73 +25 + 48 = 73 +26 + 47 = 73 +27 + 46 = 73 +28 + 45 = 73 +29 + 44 = 73 +30 + 43 = 73 +31 + 42 = 73 +32 + 41 = 73 +33 + 40 = 73 +34 + 39 = 73 +35 + 38 = 73 +36 + 37 = 73 +37 + 36 = 73 +38 + 35 = 73 +39 + 34 = 73 +40 + 33 = 73 +41 + 32 = 73 +42 + 31 = 73 +43 + 30 = 73 +44 + 29 = 73 +45 + 28 = 73 +46 + 27 = 73 +47 + 26 = 73 +48 + 25 = 73 +49 + 24 = 73 +50 + 23 = 73 +51 + 22 = 73 +52 + 21 = 73 +53 + 20 = 73 +54 + 19 = 73 +55 + 18 = 73 +56 + 17 = 73 +57 + 16 = 73 +58 + 15 = 73 +59 + 14 = 73 +60 + 13 = 73 diff --git a/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix b/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix new file mode 100644 index 0000000..de9eb6e --- /dev/null +++ b/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix @@ -0,0 +1 @@ +(((value(DefineValue(RecFunctions((((value(Id map))(position((start_p(""1 0 4))(end_p(""1 0 7)))))()(FunctionDefinition((value(PVariable((value(Id f))(position((start_p(""1 0 8))(end_p(""1 0 9)))))))(position((start_p(""1 0 8))(end_p(""1 0 9)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""1 0 13))(end_p(""1 0 14)))))))(position((start_p(""1 0 13))(end_p(""1 0 14)))))((value(Case((value(Variable((value(Id l))(position((start_p(""2 18 29))(end_p(""2 18 30)))))()))(position((start_p(""2 18 29))(end_p(""2 18 30)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""2 18 34))(end_p(""2 18 35)))))()()))(position((start_p(""2 18 34))(end_p(""2 18 35)))))((value(Tagged((value(KId N))(position((start_p(""2 18 39))(end_p(""2 18 40)))))()()))(position((start_p(""2 18 39))(end_p(""2 18 40)))))))(position((start_p(""2 18 34))(end_p(""2 18 40)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""2 18 43))(end_p(""2 18 44)))))()(((value(PVariable((value(Id x))(position((start_p(""2 18 46))(end_p(""2 18 47)))))))(position((start_p(""2 18 46))(end_p(""2 18 47)))))((value(PVariable((value(Id xs))(position((start_p(""2 18 49))(end_p(""2 18 51)))))))(position((start_p(""2 18 49))(end_p(""2 18 51))))))))(position((start_p(""2 18 43))(end_p(""2 18 52)))))((value(Tagged((value(KId C))(position((start_p(""2 18 56))(end_p(""2 18 57)))))()(((value(Apply((value(Variable((value(Id f))(position((start_p(""2 18 59))(end_p(""2 18 60)))))()))(position((start_p(""2 18 59))(end_p(""2 18 60)))))((value(Variable((value(Id x))(position((start_p(""2 18 61))(end_p(""2 18 62)))))()))(position((start_p(""2 18 61))(end_p(""2 18 62)))))))(position((start_p(""2 18 59))(end_p(""2 18 62)))))((value(Apply((value(Apply((value(Variable((value(Id map))(position((start_p(""2 18 64))(end_p(""2 18 67)))))()))(position((start_p(""2 18 64))(end_p(""2 18 67)))))((value(Variable((value(Id f))(position((start_p(""2 18 68))(end_p(""2 18 69)))))()))(position((start_p(""2 18 68))(end_p(""2 18 69)))))))(position((start_p(""2 18 64))(end_p(""2 18 69)))))((value(Variable((value(Id xs))(position((start_p(""2 18 70))(end_p(""2 18 72)))))()))(position((start_p(""2 18 70))(end_p(""2 18 72)))))))(position((start_p(""2 18 64))(end_p(""2 18 72))))))))(position((start_p(""2 18 56))(end_p(""2 18 73)))))))(position((start_p(""2 18 43))(end_p(""2 18 73))))))))(position((start_p(""2 18 22))(end_p(""2 18 75))))))))(position((start_p(""1 0 12))(end_p(""2 18 75)))))))))))(position((start_p(""1 0 0))(end_p(""2 18 75)))))((value(DefineValue(RecFunctions((((value(Id concat))(position((start_p(""4 77 81))(end_p(""4 77 87)))))()(FunctionDefinition((value(PVariable((value(Id l1))(position((start_p(""4 77 88))(end_p(""4 77 90)))))))(position((start_p(""4 77 88))(end_p(""4 77 90)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id l2))(position((start_p(""4 77 94))(end_p(""4 77 96)))))))(position((start_p(""4 77 94))(end_p(""4 77 96)))))((value(Case((value(Variable((value(Id l1))(position((start_p(""5 100 111))(end_p(""5 100 113)))))()))(position((start_p(""5 100 111))(end_p(""5 100 113)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""5 100 117))(end_p(""5 100 118)))))()()))(position((start_p(""5 100 117))(end_p(""5 100 118)))))((value(Variable((value(Id l2))(position((start_p(""5 100 122))(end_p(""5 100 124)))))()))(position((start_p(""5 100 122))(end_p(""5 100 124)))))))(position((start_p(""5 100 117))(end_p(""5 100 124)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""5 100 127))(end_p(""5 100 128)))))()(((value(PVariable((value(Id x))(position((start_p(""5 100 130))(end_p(""5 100 131)))))))(position((start_p(""5 100 130))(end_p(""5 100 131)))))((value(PVariable((value(Id xs))(position((start_p(""5 100 133))(end_p(""5 100 135)))))))(position((start_p(""5 100 133))(end_p(""5 100 135))))))))(position((start_p(""5 100 127))(end_p(""5 100 136)))))((value(Tagged((value(KId C))(position((start_p(""5 100 140))(end_p(""5 100 141)))))()(((value(Variable((value(Id x))(position((start_p(""5 100 143))(end_p(""5 100 144)))))()))(position((start_p(""5 100 143))(end_p(""5 100 144)))))((value(Apply((value(Apply((value(Variable((value(Id concat))(position((start_p(""5 100 146))(end_p(""5 100 152)))))()))(position((start_p(""5 100 146))(end_p(""5 100 152)))))((value(Variable((value(Id xs))(position((start_p(""5 100 153))(end_p(""5 100 155)))))()))(position((start_p(""5 100 153))(end_p(""5 100 155)))))))(position((start_p(""5 100 146))(end_p(""5 100 155)))))((value(Variable((value(Id l2))(position((start_p(""5 100 156))(end_p(""5 100 158)))))()))(position((start_p(""5 100 156))(end_p(""5 100 158)))))))(position((start_p(""5 100 146))(end_p(""5 100 158))))))))(position((start_p(""5 100 140))(end_p(""5 100 159)))))))(position((start_p(""5 100 127))(end_p(""5 100 159))))))))(position((start_p(""5 100 104))(end_p(""5 100 161))))))))(position((start_p(""4 77 93))(end_p(""5 100 161)))))))))))(position((start_p(""4 77 77))(end_p(""5 100 161)))))((value(DefineValue(RecFunctions((((value(Id flatten))(position((start_p(""7 163 167))(end_p(""7 163 174)))))()(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""7 163 175))(end_p(""7 163 176)))))))(position((start_p(""7 163 175))(end_p(""7 163 176)))))((value(Case((value(Variable((value(Id l))(position((start_p(""8 179 190))(end_p(""8 179 191)))))()))(position((start_p(""8 179 190))(end_p(""8 179 191)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""8 179 195))(end_p(""8 179 196)))))()()))(position((start_p(""8 179 195))(end_p(""8 179 196)))))((value(Tagged((value(KId N))(position((start_p(""8 179 200))(end_p(""8 179 201)))))()()))(position((start_p(""8 179 200))(end_p(""8 179 201)))))))(position((start_p(""8 179 195))(end_p(""8 179 201)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""8 179 204))(end_p(""8 179 205)))))()(((value(PVariable((value(Id l))(position((start_p(""8 179 207))(end_p(""8 179 208)))))))(position((start_p(""8 179 207))(end_p(""8 179 208)))))((value(PVariable((value(Id ls))(position((start_p(""8 179 210))(end_p(""8 179 212)))))))(position((start_p(""8 179 210))(end_p(""8 179 212))))))))(position((start_p(""8 179 204))(end_p(""8 179 213)))))((value(Apply((value(Apply((value(Variable((value(Id concat))(position((start_p(""8 179 217))(end_p(""8 179 223)))))()))(position((start_p(""8 179 217))(end_p(""8 179 223)))))((value(Variable((value(Id l))(position((start_p(""8 179 224))(end_p(""8 179 225)))))()))(position((start_p(""8 179 224))(end_p(""8 179 225)))))))(position((start_p(""8 179 217))(end_p(""8 179 225)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""8 179 227))(end_p(""8 179 234)))))()))(position((start_p(""8 179 227))(end_p(""8 179 234)))))((value(Variable((value(Id ls))(position((start_p(""8 179 235))(end_p(""8 179 237)))))()))(position((start_p(""8 179 235))(end_p(""8 179 237)))))))(position((start_p(""8 179 226))(end_p(""8 179 238)))))))(position((start_p(""8 179 217))(end_p(""8 179 238)))))))(position((start_p(""8 179 204))(end_p(""8 179 238))))))))(position((start_p(""8 179 183))(end_p(""8 179 240)))))))))))(position((start_p(""7 163 163))(end_p(""8 179 240)))))((value(DefineValue(RecFunctions((((value(Id return))(position((start_p(""10 242 246))(end_p(""10 242 252)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""10 242 254))(end_p(""10 242 255)))))))(position((start_p(""10 242 253))(end_p(""10 242 256)))))((value(Tagged((value(KId C))(position((start_p(""10 242 259))(end_p(""10 242 260)))))()(((value(Variable((value(Id x))(position((start_p(""10 242 262))(end_p(""10 242 263)))))()))(position((start_p(""10 242 262))(end_p(""10 242 263)))))((value(Tagged((value(KId N))(position((start_p(""10 242 265))(end_p(""10 242 266)))))()()))(position((start_p(""10 242 265))(end_p(""10 242 266))))))))(position((start_p(""10 242 259))(end_p(""10 242 267)))))))))))(position((start_p(""10 242 242))(end_p(""10 242 267)))))((value(DefineValue(RecFunctions((((value(Id bind))(position((start_p(""12 269 273))(end_p(""12 269 277)))))()(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""12 269 278))(end_p(""12 269 279)))))))(position((start_p(""12 269 278))(end_p(""12 269 279)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id f))(position((start_p(""12 269 283))(end_p(""12 269 284)))))))(position((start_p(""12 269 283))(end_p(""12 269 284)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""12 269 288))(end_p(""12 269 295)))))()))(position((start_p(""12 269 288))(end_p(""12 269 295)))))((value(Apply((value(Apply((value(Variable((value(Id map))(position((start_p(""12 269 297))(end_p(""12 269 300)))))()))(position((start_p(""12 269 297))(end_p(""12 269 300)))))((value(Variable((value(Id f))(position((start_p(""12 269 301))(end_p(""12 269 302)))))()))(position((start_p(""12 269 301))(end_p(""12 269 302)))))))(position((start_p(""12 269 297))(end_p(""12 269 302)))))((value(Variable((value(Id x))(position((start_p(""12 269 303))(end_p(""12 269 304)))))()))(position((start_p(""12 269 303))(end_p(""12 269 304)))))))(position((start_p(""12 269 296))(end_p(""12 269 305)))))))(position((start_p(""12 269 288))(end_p(""12 269 305))))))))(position((start_p(""12 269 282))(end_p(""12 269 305)))))))))))(position((start_p(""12 269 269))(end_p(""12 269 305)))))((value(DefineValue(RecFunctions((((value(Id range))(position((start_p(""14 307 311))(end_p(""14 307 316)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id start))(position((start_p(""14 307 318))(end_p(""14 307 323)))))))(position((start_p(""14 307 318))(end_p(""14 307 323)))))((value(PVariable((value(Id stop))(position((start_p(""14 307 325))(end_p(""14 307 329)))))))(position((start_p(""14 307 325))(end_p(""14 307 329))))))))(position((start_p(""14 307 317))(end_p(""14 307 330)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `>?`))(position((start_p(""14 307 343))(end_p(""14 307 345)))))()))(position((start_p(""14 307 343))(end_p(""14 307 345)))))((value(Variable((value(Id start))(position((start_p(""14 307 337))(end_p(""14 307 342)))))()))(position((start_p(""14 307 337))(end_p(""14 307 342)))))))(position((start_p(""14 307 337))(end_p(""14 307 342)))))((value(Variable((value(Id stop))(position((start_p(""14 307 346))(end_p(""14 307 350)))))()))(position((start_p(""14 307 346))(end_p(""14 307 350)))))))(position((start_p(""14 307 336))(end_p(""14 307 351)))))((value(Tagged((value(KId N))(position((start_p(""14 307 359))(end_p(""14 307 360)))))()()))(position((start_p(""14 307 359))(end_p(""14 307 360)))))((value(Tagged((value(KId C))(position((start_p(""14 307 370))(end_p(""14 307 371)))))()(((value(Variable((value(Id start))(position((start_p(""14 307 373))(end_p(""14 307 378)))))()))(position((start_p(""14 307 373))(end_p(""14 307 378)))))((value(Apply((value(Variable((value(Id range))(position((start_p(""14 307 380))(end_p(""14 307 385)))))()))(position((start_p(""14 307 380))(end_p(""14 307 385)))))((value(Tuple(((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""14 307 393))(end_p(""14 307 394)))))()))(position((start_p(""14 307 393))(end_p(""14 307 394)))))((value(Variable((value(Id start))(position((start_p(""14 307 387))(end_p(""14 307 392)))))()))(position((start_p(""14 307 387))(end_p(""14 307 392)))))))(position((start_p(""14 307 387))(end_p(""14 307 392)))))((value(Literal((value(LInt 1))(position((start_p(""14 307 395))(end_p(""14 307 396)))))))(position((start_p(""14 307 395))(end_p(""14 307 396)))))))(position((start_p(""14 307 387))(end_p(""14 307 396)))))((value(Variable((value(Id stop))(position((start_p(""14 307 398))(end_p(""14 307 402)))))()))(position((start_p(""14 307 398))(end_p(""14 307 402))))))))(position((start_p(""14 307 386))(end_p(""14 307 403)))))))(position((start_p(""14 307 380))(end_p(""14 307 403))))))))(position((start_p(""14 307 370))(end_p(""14 307 404)))))))(position((start_p(""14 307 333))(end_p(""14 307 406)))))))))))(position((start_p(""14 307 307))(end_p(""14 307 406)))))((value(DefineValue(RecFunctions((((value(Id all_sums))(position((start_p(""16 408 412))(end_p(""16 408 420)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id start))(position((start_p(""16 408 422))(end_p(""16 408 427)))))))(position((start_p(""16 408 422))(end_p(""16 408 427)))))((value(PVariable((value(Id stop))(position((start_p(""16 408 429))(end_p(""16 408 433)))))))(position((start_p(""16 408 429))(end_p(""16 408 433)))))((value(PVariable((value(Id n))(position((start_p(""16 408 435))(end_p(""16 408 436)))))))(position((start_p(""16 408 435))(end_p(""16 408 436))))))))(position((start_p(""16 408 421))(end_p(""16 408 437)))))((value(Apply((value(Apply((value(Variable((value(Id bind))(position((start_p(""17 440 444))(end_p(""17 440 448)))))()))(position((start_p(""17 440 444))(end_p(""17 440 448)))))((value(Apply((value(Variable((value(Id range))(position((start_p(""17 440 450))(end_p(""17 440 455)))))()))(position((start_p(""17 440 450))(end_p(""17 440 455)))))((value(Tuple(((value(Variable((value(Id start))(position((start_p(""17 440 457))(end_p(""17 440 462)))))()))(position((start_p(""17 440 457))(end_p(""17 440 462)))))((value(Variable((value(Id stop))(position((start_p(""17 440 464))(end_p(""17 440 468)))))()))(position((start_p(""17 440 464))(end_p(""17 440 468))))))))(position((start_p(""17 440 456))(end_p(""17 440 469)))))))(position((start_p(""17 440 449))(end_p(""17 440 470)))))))(position((start_p(""17 440 444))(end_p(""17 440 470)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id x))(position((start_p(""17 440 473))(end_p(""17 440 474)))))))(position((start_p(""17 440 473))(end_p(""17 440 474)))))((value(Apply((value(Apply((value(Variable((value(Id bind))(position((start_p(""18 478 482))(end_p(""18 478 486)))))()))(position((start_p(""18 478 482))(end_p(""18 478 486)))))((value(Apply((value(Variable((value(Id range))(position((start_p(""18 478 488))(end_p(""18 478 493)))))()))(position((start_p(""18 478 488))(end_p(""18 478 493)))))((value(Tuple(((value(Variable((value(Id start))(position((start_p(""18 478 495))(end_p(""18 478 500)))))()))(position((start_p(""18 478 495))(end_p(""18 478 500)))))((value(Variable((value(Id stop))(position((start_p(""18 478 502))(end_p(""18 478 506)))))()))(position((start_p(""18 478 502))(end_p(""18 478 506))))))))(position((start_p(""18 478 494))(end_p(""18 478 507)))))))(position((start_p(""18 478 487))(end_p(""18 478 508)))))))(position((start_p(""18 478 482))(end_p(""18 478 508)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id y))(position((start_p(""18 478 511))(end_p(""18 478 512)))))))(position((start_p(""18 478 511))(end_p(""18 478 512)))))((value(IfThenElse((value(Apply((value(Apply((value(Variable((value(Id `=?`))(position((start_p(""19 516 530))(end_p(""19 516 532)))))()))(position((start_p(""19 516 530))(end_p(""19 516 532)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""19 516 526))(end_p(""19 516 527)))))()))(position((start_p(""19 516 526))(end_p(""19 516 527)))))((value(Variable((value(Id x))(position((start_p(""19 516 524))(end_p(""19 516 525)))))()))(position((start_p(""19 516 524))(end_p(""19 516 525)))))))(position((start_p(""19 516 524))(end_p(""19 516 525)))))((value(Variable((value(Id y))(position((start_p(""19 516 528))(end_p(""19 516 529)))))()))(position((start_p(""19 516 528))(end_p(""19 516 529)))))))(position((start_p(""19 516 524))(end_p(""19 516 529)))))))(position((start_p(""19 516 524))(end_p(""19 516 529)))))((value(Variable((value(Id n))(position((start_p(""19 516 533))(end_p(""19 516 534)))))()))(position((start_p(""19 516 533))(end_p(""19 516 534)))))))(position((start_p(""19 516 523))(end_p(""19 516 535)))))((value(Apply((value(Variable((value(Id return))(position((start_p(""19 516 543))(end_p(""19 516 549)))))()))(position((start_p(""19 516 543))(end_p(""19 516 549)))))((value(Tagged((value(KId C))(position((start_p(""19 516 551))(end_p(""19 516 552)))))()(((value(Tuple(((value(Variable((value(Id x))(position((start_p(""19 516 555))(end_p(""19 516 556)))))()))(position((start_p(""19 516 555))(end_p(""19 516 556)))))((value(Variable((value(Id y))(position((start_p(""19 516 558))(end_p(""19 516 559)))))()))(position((start_p(""19 516 558))(end_p(""19 516 559)))))((value(Variable((value(Id n))(position((start_p(""19 516 561))(end_p(""19 516 562)))))()))(position((start_p(""19 516 561))(end_p(""19 516 562))))))))(position((start_p(""19 516 554))(end_p(""19 516 563)))))((value(Tagged((value(KId N))(position((start_p(""19 516 565))(end_p(""19 516 566)))))()()))(position((start_p(""19 516 565))(end_p(""19 516 566))))))))(position((start_p(""19 516 550))(end_p(""19 516 568)))))))(position((start_p(""19 516 543))(end_p(""19 516 568)))))((value(Tagged((value(KId N))(position((start_p(""19 516 578))(end_p(""19 516 579)))))()()))(position((start_p(""19 516 578))(end_p(""19 516 579)))))))(position((start_p(""19 516 520))(end_p(""19 516 581))))))))(position((start_p(""18 478 509))(end_p(""20 582 587)))))))(position((start_p(""18 478 482))(end_p(""20 582 587))))))))(position((start_p(""17 440 471))(end_p(""20 582 588)))))))(position((start_p(""17 440 444))(end_p(""20 582 588)))))))))))(position((start_p(""16 408 408))(end_p(""20 582 588)))))((value(DefineValue(RecFunctions((((value(Id show_sum))(position((start_p(""22 590 594))(end_p(""22 590 602)))))()(FunctionDefinition((value(PTuple(((value(PVariable((value(Id x))(position((start_p(""22 590 604))(end_p(""22 590 605)))))))(position((start_p(""22 590 604))(end_p(""22 590 605)))))((value(PVariable((value(Id y))(position((start_p(""22 590 607))(end_p(""22 590 608)))))))(position((start_p(""22 590 607))(end_p(""22 590 608)))))((value(PVariable((value(Id n))(position((start_p(""22 590 610))(end_p(""22 590 611)))))))(position((start_p(""22 590 610))(end_p(""22 590 611))))))))(position((start_p(""22 590 603))(end_p(""22 590 612)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""23 615 618))(end_p(""23 615 627)))))()))(position((start_p(""23 615 618))(end_p(""23 615 627)))))((value(Variable((value(Id x))(position((start_p(""23 615 629))(end_p(""23 615 630)))))()))(position((start_p(""23 615 628))(end_p(""23 615 631)))))))(position((start_p(""23 615 618))(end_p(""23 615 631)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""24 633 636))(end_p(""24 633 648)))))()))(position((start_p(""24 633 636))(end_p(""24 633 648)))))((value(Literal((value(LString" + "))(position((start_p(""24 633 654))(end_p(""24 633 655)))))))(position((start_p(""24 633 649))(end_p(""24 633 656)))))))(position((start_p(""24 633 636))(end_p(""24 633 656)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""25 658 661))(end_p(""25 658 670)))))()))(position((start_p(""25 658 661))(end_p(""25 658 670)))))((value(Variable((value(Id y))(position((start_p(""25 658 672))(end_p(""25 658 673)))))()))(position((start_p(""25 658 671))(end_p(""25 658 674)))))))(position((start_p(""25 658 661))(end_p(""25 658 674)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_string))(position((start_p(""26 676 679))(end_p(""26 676 691)))))()))(position((start_p(""26 676 679))(end_p(""26 676 691)))))((value(Literal((value(LString" = "))(position((start_p(""26 676 697))(end_p(""26 676 698)))))))(position((start_p(""26 676 692))(end_p(""26 676 699)))))))(position((start_p(""26 676 679))(end_p(""26 676 699)))))((value(Sequence(((value(Apply((value(Variable((value(Id print_int))(position((start_p(""27 701 704))(end_p(""27 701 713)))))()))(position((start_p(""27 701 704))(end_p(""27 701 713)))))((value(Variable((value(Id n))(position((start_p(""27 701 715))(end_p(""27 701 716)))))()))(position((start_p(""27 701 714))(end_p(""27 701 717)))))))(position((start_p(""27 701 704))(end_p(""27 701 717)))))((value(Apply((value(Variable((value(Id print_string))(position((start_p(""28 719 722))(end_p(""28 719 734)))))()))(position((start_p(""28 719 722))(end_p(""28 719 734)))))((value(Literal((value(LString"\n"))(position((start_p(""28 719 739))(end_p(""28 719 740)))))))(position((start_p(""28 719 735))(end_p(""28 719 741)))))))(position((start_p(""28 719 722))(end_p(""28 719 741))))))))(position((start_p(""27 701 704))(end_p(""28 719 741))))))))(position((start_p(""26 676 679))(end_p(""28 719 741))))))))(position((start_p(""25 658 661))(end_p(""28 719 741))))))))(position((start_p(""24 633 636))(end_p(""28 719 741))))))))(position((start_p(""23 615 618))(end_p(""28 719 741)))))))))))(position((start_p(""22 590 590))(end_p(""28 719 741)))))((value(DefineValue(RecFunctions((((value(Id iter))(position((start_p(""30 743 747))(end_p(""30 743 751)))))()(FunctionDefinition((value(PVariable((value(Id f))(position((start_p(""30 743 752))(end_p(""30 743 753)))))))(position((start_p(""30 743 752))(end_p(""30 743 753)))))((value(Fun(FunctionDefinition((value(PVariable((value(Id l))(position((start_p(""30 743 757))(end_p(""30 743 758)))))))(position((start_p(""30 743 757))(end_p(""30 743 758)))))((value(Case((value(Variable((value(Id l))(position((start_p(""31 762 773))(end_p(""31 762 774)))))()))(position((start_p(""31 762 773))(end_p(""31 762 774)))))(((value(Branch((value(PTaggedValue((value(KId N))(position((start_p(""31 762 778))(end_p(""31 762 779)))))()()))(position((start_p(""31 762 778))(end_p(""31 762 779)))))((value(Variable((value(Id nothing))(position((start_p(""31 762 783))(end_p(""31 762 790)))))()))(position((start_p(""31 762 783))(end_p(""31 762 790)))))))(position((start_p(""31 762 778))(end_p(""31 762 790)))))((value(Branch((value(PTaggedValue((value(KId C))(position((start_p(""31 762 793))(end_p(""31 762 794)))))()(((value(PVariable((value(Id x))(position((start_p(""31 762 796))(end_p(""31 762 797)))))))(position((start_p(""31 762 796))(end_p(""31 762 797)))))((value(PVariable((value(Id xs))(position((start_p(""31 762 799))(end_p(""31 762 801)))))))(position((start_p(""31 762 799))(end_p(""31 762 801))))))))(position((start_p(""31 762 793))(end_p(""31 762 802)))))((value(Sequence(((value(Apply((value(Variable((value(Id f))(position((start_p(""31 762 806))(end_p(""31 762 807)))))()))(position((start_p(""31 762 806))(end_p(""31 762 807)))))((value(Variable((value(Id x))(position((start_p(""31 762 808))(end_p(""31 762 809)))))()))(position((start_p(""31 762 808))(end_p(""31 762 809)))))))(position((start_p(""31 762 806))(end_p(""31 762 809)))))((value(Apply((value(Apply((value(Variable((value(Id iter))(position((start_p(""31 762 811))(end_p(""31 762 815)))))()))(position((start_p(""31 762 811))(end_p(""31 762 815)))))((value(Variable((value(Id f))(position((start_p(""31 762 816))(end_p(""31 762 817)))))()))(position((start_p(""31 762 816))(end_p(""31 762 817)))))))(position((start_p(""31 762 811))(end_p(""31 762 817)))))((value(Variable((value(Id xs))(position((start_p(""31 762 818))(end_p(""31 762 820)))))()))(position((start_p(""31 762 818))(end_p(""31 762 820)))))))(position((start_p(""31 762 811))(end_p(""31 762 820))))))))(position((start_p(""31 762 806))(end_p(""31 762 820)))))))(position((start_p(""31 762 793))(end_p(""31 762 820))))))))(position((start_p(""31 762 766))(end_p(""31 762 822))))))))(position((start_p(""30 743 756))(end_p(""31 762 822)))))))))))(position((start_p(""30 743 743))(end_p(""31 762 822)))))((value(DefineValue(SimpleValue(((value(Id test))(position((start_p(""33 824 828))(end_p(""33 824 832)))))()((value(Apply((value(Apply((value(Variable((value(Id iter))(position((start_p(""34 835 839))(end_p(""34 835 843)))))()))(position((start_p(""34 835 839))(end_p(""34 835 843)))))((value(Variable((value(Id show_sum))(position((start_p(""34 835 844))(end_p(""34 835 852)))))()))(position((start_p(""34 835 844))(end_p(""34 835 852)))))))(position((start_p(""34 835 839))(end_p(""34 835 852)))))((value(Apply((value(Variable((value(Id flatten))(position((start_p(""34 835 854))(end_p(""34 835 861)))))()))(position((start_p(""34 835 854))(end_p(""34 835 861)))))((value(Apply((value(Variable((value(Id all_sums))(position((start_p(""34 835 863))(end_p(""34 835 871)))))()))(position((start_p(""34 835 863))(end_p(""34 835 871)))))((value(Tuple(((value(Literal((value(LInt 13))(position((start_p(""34 835 873))(end_p(""34 835 875)))))))(position((start_p(""34 835 873))(end_p(""34 835 875)))))((value(Literal((value(LInt 73))(position((start_p(""34 835 877))(end_p(""34 835 879)))))))(position((start_p(""34 835 877))(end_p(""34 835 879)))))((value(Literal((value(LInt 73))(position((start_p(""34 835 881))(end_p(""34 835 883)))))))(position((start_p(""34 835 881))(end_p(""34 835 883))))))))(position((start_p(""34 835 872))(end_p(""34 835 884)))))))(position((start_p(""34 835 862))(end_p(""34 835 885)))))))(position((start_p(""34 835 853))(end_p(""34 835 886)))))))(position((start_p(""34 835 839))(end_p(""34 835 886)))))))))(position((start_p(""33 824 824))(end_p(""34 835 886)))))) \ No newline at end of file diff --git a/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix.human-readable b/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix.human-readable new file mode 100644 index 0000000..5a31d31 --- /dev/null +++ b/flap/tests/02-Interpreter/72-list-monad-3.eval.hopix.human-readable @@ -0,0 +1,34 @@ +fun map f = \l -> + match (l) { N -> N | C (x, xs) -> C (f x, map f xs) } + +fun concat l1 = \l2 -> + match (l1) { N -> l2 | C (x, xs) -> C (x, concat xs l2) } + +fun flatten l = + match (l) { N -> N | C (l, ls) -> concat l (flatten ls) } + +fun return (x) = C (x, N) + +fun bind x = \f -> flatten (map f x) + +fun range (start, stop) = if (start >? stop) then { N } else { C (start, range (start + 1, stop)) } + +fun all_sums (start, stop, n) = + bind (range (start, stop)) (\x -> + bind (range (start, stop)) (\y -> + if (x + y =? n) then { return (C ((x, y, n), N)) } else { N } + )) + +fun show_sum (x, y, n) = + print_int (x); + print_string (" + "); + print_int (y); + print_string (" = "); + print_int (n); + print_string ("\n") + +fun iter f = \l -> + match (l) { N -> nothing | C (x, xs) -> f x; iter f xs } + +let test = + iter show_sum (flatten (all_sums (13, 73, 73))) diff --git a/flap/tests/02-Interpreter/72-list-monad-3.expected b/flap/tests/02-Interpreter/72-list-monad-3.expected new file mode 100644 index 0000000..0d86eda --- /dev/null +++ b/flap/tests/02-Interpreter/72-list-monad-3.expected @@ -0,0 +1,48 @@ +13 + 60 = 73 +14 + 59 = 73 +15 + 58 = 73 +16 + 57 = 73 +17 + 56 = 73 +18 + 55 = 73 +19 + 54 = 73 +20 + 53 = 73 +21 + 52 = 73 +22 + 51 = 73 +23 + 50 = 73 +24 + 49 = 73 +25 + 48 = 73 +26 + 47 = 73 +27 + 46 = 73 +28 + 45 = 73 +29 + 44 = 73 +30 + 43 = 73 +31 + 42 = 73 +32 + 41 = 73 +33 + 40 = 73 +34 + 39 = 73 +35 + 38 = 73 +36 + 37 = 73 +37 + 36 = 73 +38 + 35 = 73 +39 + 34 = 73 +40 + 33 = 73 +41 + 32 = 73 +42 + 31 = 73 +43 + 30 = 73 +44 + 29 = 73 +45 + 28 = 73 +46 + 27 = 73 +47 + 26 = 73 +48 + 25 = 73 +49 + 24 = 73 +50 + 23 = 73 +51 + 22 = 73 +52 + 21 = 73 +53 + 20 = 73 +54 + 19 = 73 +55 + 18 = 73 +56 + 17 = 73 +57 + 16 = 73 +58 + 15 = 73 +59 + 14 = 73 +60 + 13 = 73 diff --git a/jalons/jalon-2.pdf b/jalons/jalon-2.pdf new file mode 100644 index 0000000..c3cd417 Binary files /dev/null and b/jalons/jalon-2.pdf differ diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/AST.ml b/tp/tp-reduce-reduce/functions-multiple-arguments/AST.ml new file mode 100644 index 0000000..2e2b8a5 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/AST.ml @@ -0,0 +1,9 @@ +type expression = +Var of Id.t +| Int of int +| Add of expression * expression +| Fun of boundN +| App of expression * expression list + +and boundN = { bound : Id.t list; + body : expression; } diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/Makefile b/tp/tp-reduce-reduce/functions-multiple-arguments/Makefile new file mode 100644 index 0000000..0e58deb --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/Makefile @@ -0,0 +1,11 @@ +.PHONY: all clean + +MAIN=fun + +all: + dune build $(MAIN).exe + ln -sf _build/default/$(MAIN).exe $(MAIN) + +clean: + dune clean + rm -fr *~ l1 diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/dune b/tp/tp-reduce-reduce/functions-multiple-arguments/dune new file mode 100644 index 0000000..eb6e61b --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/dune @@ -0,0 +1,11 @@ +(ocamllex lexer) + +(menhir + (flags --explain --inspection --table) + (modules parser)) + +(executable + (name fun) + (ocamlopt_flags :standard) + (libraries menhirLib) +) \ No newline at end of file diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/dune-project b/tp/tp-reduce-reduce/functions-multiple-arguments/dune-project new file mode 100644 index 0000000..ca4766b --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/dune-project @@ -0,0 +1,2 @@ +(lang dune 1.11) +(using menhir 2.0) diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/fun.ml b/tp/tp-reduce-reduce/functions-multiple-arguments/fun.ml new file mode 100644 index 0000000..5133f58 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/fun.ml @@ -0,0 +1,32 @@ +let rec interactive_loop () = + welcome_message (); + let rec loop () = + match read () |> eval |> print with + | () -> loop () + | exception End_of_file -> print_newline () + | exception exn -> + Printf.printf "Error: %s\n%!" (Printexc.to_string exn); + loop () + in + loop () + +and welcome_message () = + Printf.printf "" + +and read () = + prompt (); input_line stdin |> parse + +and prompt () = + Printf.printf "> %!" + +and parse input = + let lexbuf = Lexing.from_string input in + Parser.phrase Lexer.token lexbuf + +and print e = + Printf.printf ":- %s\n%!" (Printer.string_of_exp e) + +and eval e = + e + +let main = interactive_loop () diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/id.ml b/tp/tp-reduce-reduce/functions-multiple-arguments/id.ml new file mode 100644 index 0000000..c6a8e28 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/id.ml @@ -0,0 +1 @@ +type t = string diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/lexer.mll b/tp/tp-reduce-reduce/functions-multiple-arguments/lexer.mll new file mode 100644 index 0000000..28aef70 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/lexer.mll @@ -0,0 +1,21 @@ +{ (* Emacs, open this file with -*- tuareg -*- *) + open Parser +} + +let layout = ' ' | '\t' | '\n' +let number = ['0'-'9']+ +let identifier = ['a'-'z']['A'-'Z' '0'-'9' 'a'-'z' '_']* + +rule token = parse +| eof { EOF } +| layout { token lexbuf } +| number as i { INT (int_of_string i) } +| "fun" { FUN } +| identifier as s { ID s } +| "(" { LP } +| ")" { RP } +| "->" { RIGHT_ARROW } +| "+" { PLUS } +| _ as c { + failwith (Printf.sprintf "Invalid character: %c\n" c) +} diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/parser.mly b/tp/tp-reduce-reduce/functions-multiple-arguments/parser.mly new file mode 100644 index 0000000..3243332 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/parser.mly @@ -0,0 +1,35 @@ +%{ (* Emacs, open this with -*- tuareg -*- *) +open AST +%} + +%token INT +%token ID +%token PLUS EOF FUN RIGHT_ARROW LP RP + +%start phrase + +%nonassoc RIGHT_ARROW +%left PLUS + +%nonassoc prec_application + +%nonassoc LP INT ID FUN + +%% + +phrase: + e=expression EOF { e } + +arguments: + | e=expression { [ e ] } %prec prec_application + | hd=expression tl=arguments { hd::tl } + +expression: + | LP e=expression RP { e } + | n=INT { Int n } + | x=ID { Var x } + | e1=expression PLUS e2=expression { Add (e1, e2) } + | FUN vars=nonempty_list(ID) RIGHT_ARROW e=expression + { Fun { bound=vars; body=e }} + | f=expression args=arguments + { App (f, args) } diff --git a/tp/tp-reduce-reduce/functions-multiple-arguments/printer.ml b/tp/tp-reduce-reduce/functions-multiple-arguments/printer.ml new file mode 100644 index 0000000..81db7c7 --- /dev/null +++ b/tp/tp-reduce-reduce/functions-multiple-arguments/printer.ml @@ -0,0 +1,18 @@ +open AST + +let string_of_exp e = + let rec aux = function + | Var x -> + x + | Int x -> + string_of_int x + | Add (e1, e2) -> + Printf.sprintf "(%s + %s)" (aux e1) (aux e2) + | Fun b -> + Printf.sprintf "(fun %s -> %s)" + (String.concat " " b.bound) + (aux b.body) + | App (f, a) -> + "(" ^ String.concat " " (List.map aux (f::a)) ^ ")" + in + aux e