From 277a50669a954af8e8f4b15dcbb0726784e34332 Mon Sep 17 00:00:00 2001 From: Adrien Guatto Date: Wed, 25 Oct 2023 15:16:53 +0200 Subject: [PATCH] Publication du jalon 2 --- .../01-arithmetic-01.eval.hopix | 1 + ...01-arithmetic-01.eval.hopix.human-readable | 1 + .../02-Interpreter/01-arithmetic-01.expected | 1 + .../02-arithmetic-02.eval.hopix | 1 + ...02-arithmetic-02.eval.hopix.human-readable | 2 + .../02-Interpreter/02-arithmetic-02.expected | 1 + .../03-arithmetic-03.eval.hopix | 1 + ...03-arithmetic-03.eval.hopix.human-readable | 2 + .../02-Interpreter/03-arithmetic-03.expected | 1 + .../04-arithmetic-04.eval.hopix | 1 + ...04-arithmetic-04.eval.hopix.human-readable | 2 + .../02-Interpreter/04-arithmetic-04.expected | 1 + .../05-arithmetic-05.eval.hopix | 1 + ...05-arithmetic-05.eval.hopix.human-readable | 2 + .../02-Interpreter/05-arithmetic-05.expected | 1 + .../06-arithmetic-06.eval.hopix | 1 + ...06-arithmetic-06.eval.hopix.human-readable | 2 + .../02-Interpreter/06-arithmetic-06.expected | 1 + .../07-arithmetic-07.eval.hopix | 1 + ...07-arithmetic-07.eval.hopix.human-readable | 2 + .../02-Interpreter/07-arithmetic-07.expected | 1 + .../08-arithmetic-08.eval.hopix | 1 + ...08-arithmetic-08.eval.hopix.human-readable | 2 + .../02-Interpreter/08-arithmetic-08.expected | 1 + .../02-Interpreter/09-boolean-01.eval.hopix | 1 + .../09-boolean-01.eval.hopix.human-readable | 3 + .../02-Interpreter/09-boolean-01.expected | 1 + .../02-Interpreter/10-boolean-02.eval.hopix | 1 + .../10-boolean-02.eval.hopix.human-readable | 2 + .../02-Interpreter/10-boolean-02.expected | 1 + .../02-Interpreter/11-boolean-03.eval.hopix | 1 + .../11-boolean-03.eval.hopix.human-readable | 2 + .../02-Interpreter/11-boolean-03.expected | 1 + .../02-Interpreter/12-boolean-04.eval.hopix | 1 + .../12-boolean-04.eval.hopix.human-readable | 2 + .../02-Interpreter/12-boolean-04.expected | 1 + .../02-Interpreter/13-boolean-05.eval.hopix | 1 + .../13-boolean-05.eval.hopix.human-readable | 2 + .../02-Interpreter/13-boolean-05.expected | 1 + .../02-Interpreter/14-string-01.eval.hopix | 1 + .../14-string-01.eval.hopix.human-readable | 2 + .../02-Interpreter/14-string-01.expected | 1 + .../15-constructor-01.eval.hopix | 1 + ...5-constructor-01.eval.hopix.human-readable | 2 + .../02-Interpreter/15-constructor-01.expected | 1 + .../16-constructor-02.eval.hopix | 1 + ...6-constructor-02.eval.hopix.human-readable | 2 + .../02-Interpreter/16-constructor-02.expected | 1 + .../17-constructor-03.eval.hopix | 1 + ...7-constructor-03.eval.hopix.human-readable | 2 + .../02-Interpreter/17-constructor-03.expected | 1 + .../18-constructor-04.eval.hopix | 1 + ...8-constructor-04.eval.hopix.human-readable | 4 + .../02-Interpreter/18-constructor-04.expected | 1 + .../02-Interpreter/19-record-01.eval.hopix | 1 + .../19-record-01.eval.hopix.human-readable | 2 + .../02-Interpreter/19-record-01.expected | 1 + .../02-Interpreter/20-record-02.eval.hopix | 1 + .../20-record-02.eval.hopix.human-readable | 2 + .../02-Interpreter/20-record-02.expected | 1 + .../02-Interpreter/21-record-03.eval.hopix | 1 + .../21-record-03.eval.hopix.human-readable | 3 + .../02-Interpreter/21-record-03.expected | 1 + .../02-Interpreter/22-field-01.eval.hopix | 1 + .../22-field-01.eval.hopix.human-readable | 3 + .../tests/02-Interpreter/22-field-01.expected | 1 + .../02-Interpreter/23-field-02.eval.hopix | 1 + .../23-field-02.eval.hopix.human-readable | 3 + .../tests/02-Interpreter/23-field-02.expected | 1 + .../02-Interpreter/24-field-03.eval.hopix | 1 + .../24-field-03.eval.hopix.human-readable | 4 + .../tests/02-Interpreter/24-field-03.expected | 1 + .../02-Interpreter/25-sequence-01.eval.hopix | 1 + .../25-sequence-01.eval.hopix.human-readable | 3 + .../02-Interpreter/25-sequence-01.expected | 1 + .../02-Interpreter/26-sequence-02.eval.hopix | 1 + .../26-sequence-02.eval.hopix.human-readable | 5 ++ .../02-Interpreter/26-sequence-02.expected | 1 + .../27-local-definition-01.eval.hopix | 1 + ...al-definition-01.eval.hopix.human-readable | 3 + .../27-local-definition-01.expected | 1 + .../28-local-definition-02.eval.hopix | 1 + ...al-definition-02.eval.hopix.human-readable | 4 + .../28-local-definition-02.expected | 1 + .../29-local-definition-03.eval.hopix | 1 + ...al-definition-03.eval.hopix.human-readable | 5 ++ .../29-local-definition-03.expected | 1 + .../30-local-definition-04.eval.hopix | 1 + ...al-definition-04.eval.hopix.human-readable | 7 ++ .../30-local-definition-04.expected | 1 + .../31-local-definition-05.eval.hopix | 1 + ...al-definition-05.eval.hopix.human-readable | 7 ++ .../31-local-definition-05.expected | 1 + .../02-Interpreter/32-application.eval.hopix | 1 + .../32-application.eval.hopix.human-readable | 2 + .../02-Interpreter/32-application.expected | 1 + .../33-application-02.eval.hopix | 1 + ...3-application-02.eval.hopix.human-readable | 5 ++ .../02-Interpreter/33-application-02.expected | 1 + .../34-application-03.eval.hopix | 1 + ...4-application-03.eval.hopix.human-readable | 3 + .../02-Interpreter/34-application-03.expected | 1 + .../35-application-04.eval.hopix | 1 + ...5-application-04.eval.hopix.human-readable | 4 + .../02-Interpreter/35-application-04.expected | 1 + .../02-Interpreter/36-allocate-01.eval.hopix | 1 + .../36-allocate-01.eval.hopix.human-readable | 2 + .../02-Interpreter/36-allocate-01.expected | 1 + .../02-Interpreter/37-allocate-02.eval.hopix | 1 + .../37-allocate-02.eval.hopix.human-readable | 2 + .../02-Interpreter/37-allocate-02.expected | 1 + .../02-Interpreter/38-allocate-03.eval.hopix | 1 + .../38-allocate-03.eval.hopix.human-readable | 4 + .../02-Interpreter/38-allocate-03.expected | 1 + .../02-Interpreter/39-allocate-04.eval.hopix | 1 + .../39-allocate-04.eval.hopix.human-readable | 7 ++ .../02-Interpreter/39-allocate-04.expected | 1 + .../02-Interpreter/40-allocate-05.eval.hopix | 1 + .../40-allocate-05.eval.hopix.human-readable | 8 ++ .../02-Interpreter/40-allocate-05.expected | 1 + .../02-Interpreter/41-allocate-06.eval.hopix | 1 + .../41-allocate-06.eval.hopix.human-readable | 4 + .../02-Interpreter/41-allocate-06.expected | 1 + .../02-Interpreter/42-match-01.eval.hopix | 1 + .../42-match-01.eval.hopix.human-readable | 5 ++ .../tests/02-Interpreter/42-match-01.expected | 1 + .../02-Interpreter/43-match-02.eval.hopix | 1 + .../43-match-02.eval.hopix.human-readable | 5 ++ .../tests/02-Interpreter/43-match-02.expected | 1 + .../02-Interpreter/44-match-03.eval.hopix | 1 + .../44-match-03.eval.hopix.human-readable | 9 +++ .../tests/02-Interpreter/44-match-03.expected | 1 + .../02-Interpreter/45-match-04.eval.hopix | 1 + .../45-match-04.eval.hopix.human-readable | 9 +++ .../tests/02-Interpreter/45-match-04.expected | 1 + .../02-Interpreter/46-match-05.eval.hopix | 1 + .../46-match-05.eval.hopix.human-readable | 7 ++ .../tests/02-Interpreter/46-match-05.expected | 1 + .../02-Interpreter/47-match-06.eval.hopix | 1 + .../47-match-06.eval.hopix.human-readable | 7 ++ .../tests/02-Interpreter/47-match-06.expected | 1 + .../02-Interpreter/48-match-07.eval.hopix | 1 + .../48-match-07.eval.hopix.human-readable | 7 ++ .../tests/02-Interpreter/48-match-07.expected | 1 + .../02-Interpreter/49-match-08.eval.hopix | 1 + .../49-match-08.eval.hopix.human-readable | 7 ++ .../tests/02-Interpreter/49-match-08.expected | 1 + .../02-Interpreter/50-match-09.eval.hopix | 1 + .../50-match-09.eval.hopix.human-readable | 9 +++ .../tests/02-Interpreter/50-match-09.expected | 1 + .../02-Interpreter/51-match-10.eval.hopix | 1 + .../51-match-10.eval.hopix.human-readable | 10 +++ .../tests/02-Interpreter/51-match-10.expected | 1 + .../02-Interpreter/52-match-11.eval.hopix | 1 + .../52-match-11.eval.hopix.human-readable | 5 ++ .../tests/02-Interpreter/52-match-11.expected | 1 + .../02-Interpreter/53-match-12.eval.hopix | 1 + .../53-match-12.eval.hopix.human-readable | 14 ++++ .../tests/02-Interpreter/53-match-12.expected | 1 + .../02-Interpreter/54-match-13.eval.hopix | 1 + .../54-match-13.eval.hopix.human-readable | 5 ++ .../tests/02-Interpreter/54-match-13.expected | 2 + flap/tests/02-Interpreter/55-if-01.eval.hopix | 1 + .../55-if-01.eval.hopix.human-readable | 7 ++ flap/tests/02-Interpreter/55-if-01.expected | 1 + flap/tests/02-Interpreter/56-if-02.eval.hopix | 1 + .../56-if-02.eval.hopix.human-readable | 10 +++ flap/tests/02-Interpreter/56-if-02.expected | 1 + flap/tests/02-Interpreter/57-if-03.eval.hopix | 1 + .../57-if-03.eval.hopix.human-readable | 9 +++ flap/tests/02-Interpreter/57-if-03.expected | 1 + .../02-Interpreter/58-while-01.eval.hopix | 1 + .../58-while-01.eval.hopix.human-readable | 12 +++ .../tests/02-Interpreter/58-while-01.expected | 1 + .../02-Interpreter/59-while-02.eval.hopix | 1 + .../59-while-02.eval.hopix.human-readable | 17 ++++ .../tests/02-Interpreter/59-while-02.expected | 1 + .../02-Interpreter/60-while-03.eval.hopix | 1 + .../60-while-03.eval.hopix.human-readable | 13 +++ .../tests/02-Interpreter/60-while-03.expected | 1 + .../02-Interpreter/61-while-04.eval.hopix | 1 + .../61-while-04.eval.hopix.human-readable | 9 +++ .../tests/02-Interpreter/61-while-04.expected | 1 + .../tests/02-Interpreter/62-for-01.eval.hopix | 1 + .../62-for-01.eval.hopix.human-readable | 7 ++ flap/tests/02-Interpreter/62-for-01.expected | 1 + .../tests/02-Interpreter/63-for-02.eval.hopix | 1 + .../63-for-02.eval.hopix.human-readable | 13 +++ flap/tests/02-Interpreter/63-for-02.expected | 1 + .../tests/02-Interpreter/64-for-03.eval.hopix | 1 + .../64-for-03.eval.hopix.human-readable | 13 +++ flap/tests/02-Interpreter/64-for-03.expected | 1 + .../tests/02-Interpreter/65-for-04.eval.hopix | 1 + .../65-for-04.eval.hopix.human-readable | 13 +++ flap/tests/02-Interpreter/65-for-04.expected | 1 + .../tests/02-Interpreter/66-concat.eval.hopix | 1 + .../66-concat.eval.hopix.human-readable | 25 ++++++ flap/tests/02-Interpreter/66-concat.expected | 1 + .../tests/02-Interpreter/67-sorted.eval.hopix | 1 + .../67-sorted.eval.hopix.human-readable | 43 ++++++++++ flap/tests/02-Interpreter/67-sorted.expected | 1 + flap/tests/02-Interpreter/68-sort.eval.hopix | 1 + .../68-sort.eval.hopix.human-readable | 74 ++++++++++++++++++ flap/tests/02-Interpreter/68-sort.expected | 1 + .../02-Interpreter/69-sort-big.eval.hopix | 1 + .../69-sort-big.eval.hopix.human-readable | 74 ++++++++++++++++++ .../tests/02-Interpreter/69-sort-big.expected | 1 + flap/tests/02-Interpreter/70-tree.eval.hopix | 1 + .../70-tree.eval.hopix.human-readable | 14 ++++ flap/tests/02-Interpreter/70-tree.expected | 15 ++++ .../02-Interpreter/71-list-monad.eval.hopix | 1 + .../71-list-monad.eval.hopix.human-readable | 39 +++++++++ .../02-Interpreter/71-list-monad.expected | 48 ++++++++++++ .../02-Interpreter/72-list-monad-3.eval.hopix | 1 + .../72-list-monad-3.eval.hopix.human-readable | 34 ++++++++ .../02-Interpreter/72-list-monad-3.expected | 48 ++++++++++++ jalons/jalon-2.pdf | Bin 0 -> 352835 bytes 217 files changed, 908 insertions(+) create mode 100644 flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/01-arithmetic-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/01-arithmetic-01.expected create mode 100644 flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/02-arithmetic-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/02-arithmetic-02.expected create mode 100644 flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/03-arithmetic-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/03-arithmetic-03.expected create mode 100644 flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/04-arithmetic-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/04-arithmetic-04.expected create mode 100644 flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix create mode 100644 flap/tests/02-Interpreter/05-arithmetic-05.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/05-arithmetic-05.expected create mode 100644 flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix create mode 100644 flap/tests/02-Interpreter/06-arithmetic-06.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/06-arithmetic-06.expected create mode 100644 flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix create mode 100644 flap/tests/02-Interpreter/07-arithmetic-07.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/07-arithmetic-07.expected create mode 100644 flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix create mode 100644 flap/tests/02-Interpreter/08-arithmetic-08.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/08-arithmetic-08.expected create mode 100644 flap/tests/02-Interpreter/09-boolean-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/09-boolean-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/09-boolean-01.expected create mode 100644 flap/tests/02-Interpreter/10-boolean-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/10-boolean-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/10-boolean-02.expected create mode 100644 flap/tests/02-Interpreter/11-boolean-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/11-boolean-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/11-boolean-03.expected create mode 100644 flap/tests/02-Interpreter/12-boolean-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/12-boolean-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/12-boolean-04.expected create mode 100644 flap/tests/02-Interpreter/13-boolean-05.eval.hopix create mode 100644 flap/tests/02-Interpreter/13-boolean-05.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/13-boolean-05.expected create mode 100644 flap/tests/02-Interpreter/14-string-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/14-string-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/14-string-01.expected create mode 100644 flap/tests/02-Interpreter/15-constructor-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/15-constructor-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/15-constructor-01.expected create mode 100644 flap/tests/02-Interpreter/16-constructor-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/16-constructor-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/16-constructor-02.expected create mode 100644 flap/tests/02-Interpreter/17-constructor-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/17-constructor-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/17-constructor-03.expected create mode 100644 flap/tests/02-Interpreter/18-constructor-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/18-constructor-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/18-constructor-04.expected create mode 100644 flap/tests/02-Interpreter/19-record-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/19-record-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/19-record-01.expected create mode 100644 flap/tests/02-Interpreter/20-record-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/20-record-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/20-record-02.expected create mode 100644 flap/tests/02-Interpreter/21-record-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/21-record-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/21-record-03.expected create mode 100644 flap/tests/02-Interpreter/22-field-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/22-field-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/22-field-01.expected create mode 100644 flap/tests/02-Interpreter/23-field-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/23-field-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/23-field-02.expected create mode 100644 flap/tests/02-Interpreter/24-field-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/24-field-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/24-field-03.expected create mode 100644 flap/tests/02-Interpreter/25-sequence-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/25-sequence-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/25-sequence-01.expected create mode 100644 flap/tests/02-Interpreter/26-sequence-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/26-sequence-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/26-sequence-02.expected create mode 100644 flap/tests/02-Interpreter/27-local-definition-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/27-local-definition-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/27-local-definition-01.expected create mode 100644 flap/tests/02-Interpreter/28-local-definition-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/28-local-definition-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/28-local-definition-02.expected create mode 100644 flap/tests/02-Interpreter/29-local-definition-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/29-local-definition-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/29-local-definition-03.expected create mode 100644 flap/tests/02-Interpreter/30-local-definition-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/30-local-definition-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/30-local-definition-04.expected create mode 100644 flap/tests/02-Interpreter/31-local-definition-05.eval.hopix create mode 100644 flap/tests/02-Interpreter/31-local-definition-05.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/31-local-definition-05.expected create mode 100644 flap/tests/02-Interpreter/32-application.eval.hopix create mode 100644 flap/tests/02-Interpreter/32-application.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/32-application.expected create mode 100644 flap/tests/02-Interpreter/33-application-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/33-application-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/33-application-02.expected create mode 100644 flap/tests/02-Interpreter/34-application-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/34-application-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/34-application-03.expected create mode 100644 flap/tests/02-Interpreter/35-application-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/35-application-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/35-application-04.expected create mode 100644 flap/tests/02-Interpreter/36-allocate-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/36-allocate-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/36-allocate-01.expected create mode 100644 flap/tests/02-Interpreter/37-allocate-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/37-allocate-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/37-allocate-02.expected create mode 100644 flap/tests/02-Interpreter/38-allocate-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/38-allocate-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/38-allocate-03.expected create mode 100644 flap/tests/02-Interpreter/39-allocate-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/39-allocate-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/39-allocate-04.expected create mode 100644 flap/tests/02-Interpreter/40-allocate-05.eval.hopix create mode 100644 flap/tests/02-Interpreter/40-allocate-05.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/40-allocate-05.expected create mode 100644 flap/tests/02-Interpreter/41-allocate-06.eval.hopix create mode 100644 flap/tests/02-Interpreter/41-allocate-06.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/41-allocate-06.expected create mode 100644 flap/tests/02-Interpreter/42-match-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/42-match-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/42-match-01.expected create mode 100644 flap/tests/02-Interpreter/43-match-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/43-match-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/43-match-02.expected create mode 100644 flap/tests/02-Interpreter/44-match-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/44-match-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/44-match-03.expected create mode 100644 flap/tests/02-Interpreter/45-match-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/45-match-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/45-match-04.expected create mode 100644 flap/tests/02-Interpreter/46-match-05.eval.hopix create mode 100644 flap/tests/02-Interpreter/46-match-05.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/46-match-05.expected create mode 100644 flap/tests/02-Interpreter/47-match-06.eval.hopix create mode 100644 flap/tests/02-Interpreter/47-match-06.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/47-match-06.expected create mode 100644 flap/tests/02-Interpreter/48-match-07.eval.hopix create mode 100644 flap/tests/02-Interpreter/48-match-07.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/48-match-07.expected create mode 100644 flap/tests/02-Interpreter/49-match-08.eval.hopix create mode 100644 flap/tests/02-Interpreter/49-match-08.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/49-match-08.expected create mode 100644 flap/tests/02-Interpreter/50-match-09.eval.hopix create mode 100644 flap/tests/02-Interpreter/50-match-09.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/50-match-09.expected create mode 100644 flap/tests/02-Interpreter/51-match-10.eval.hopix create mode 100644 flap/tests/02-Interpreter/51-match-10.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/51-match-10.expected create mode 100644 flap/tests/02-Interpreter/52-match-11.eval.hopix create mode 100644 flap/tests/02-Interpreter/52-match-11.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/52-match-11.expected create mode 100644 flap/tests/02-Interpreter/53-match-12.eval.hopix create mode 100644 flap/tests/02-Interpreter/53-match-12.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/53-match-12.expected create mode 100644 flap/tests/02-Interpreter/54-match-13.eval.hopix create mode 100644 flap/tests/02-Interpreter/54-match-13.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/54-match-13.expected create mode 100644 flap/tests/02-Interpreter/55-if-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/55-if-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/55-if-01.expected create mode 100644 flap/tests/02-Interpreter/56-if-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/56-if-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/56-if-02.expected create mode 100644 flap/tests/02-Interpreter/57-if-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/57-if-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/57-if-03.expected create mode 100644 flap/tests/02-Interpreter/58-while-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/58-while-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/58-while-01.expected create mode 100644 flap/tests/02-Interpreter/59-while-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/59-while-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/59-while-02.expected create mode 100644 flap/tests/02-Interpreter/60-while-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/60-while-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/60-while-03.expected create mode 100644 flap/tests/02-Interpreter/61-while-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/61-while-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/61-while-04.expected create mode 100644 flap/tests/02-Interpreter/62-for-01.eval.hopix create mode 100644 flap/tests/02-Interpreter/62-for-01.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/62-for-01.expected create mode 100644 flap/tests/02-Interpreter/63-for-02.eval.hopix create mode 100644 flap/tests/02-Interpreter/63-for-02.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/63-for-02.expected create mode 100644 flap/tests/02-Interpreter/64-for-03.eval.hopix create mode 100644 flap/tests/02-Interpreter/64-for-03.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/64-for-03.expected create mode 100644 flap/tests/02-Interpreter/65-for-04.eval.hopix create mode 100644 flap/tests/02-Interpreter/65-for-04.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/65-for-04.expected create mode 100644 flap/tests/02-Interpreter/66-concat.eval.hopix create mode 100644 flap/tests/02-Interpreter/66-concat.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/66-concat.expected create mode 100644 flap/tests/02-Interpreter/67-sorted.eval.hopix create mode 100644 flap/tests/02-Interpreter/67-sorted.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/67-sorted.expected create mode 100644 flap/tests/02-Interpreter/68-sort.eval.hopix create mode 100644 flap/tests/02-Interpreter/68-sort.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/68-sort.expected create mode 100644 flap/tests/02-Interpreter/69-sort-big.eval.hopix create mode 100644 flap/tests/02-Interpreter/69-sort-big.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/69-sort-big.expected create mode 100644 flap/tests/02-Interpreter/70-tree.eval.hopix create mode 100644 flap/tests/02-Interpreter/70-tree.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/70-tree.expected create mode 100644 flap/tests/02-Interpreter/71-list-monad.eval.hopix create mode 100644 flap/tests/02-Interpreter/71-list-monad.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/71-list-monad.expected create mode 100644 flap/tests/02-Interpreter/72-list-monad-3.eval.hopix create mode 100644 flap/tests/02-Interpreter/72-list-monad-3.eval.hopix.human-readable create mode 100644 flap/tests/02-Interpreter/72-list-monad-3.expected create mode 100644 jalons/jalon-2.pdf 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 0000000000000000000000000000000000000000..c3cd41720ab8610c8d483eeec47844e4691eb0c3 GIT binary patch literal 352835 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%0AZ5JyyEU5~PD10vITUXwl=MOb2Ek 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 z z*(NfgFwK;XRiN7VfIYak5}iqO50jT@2j#trLHRY%l{gSmS2}k+bNMFnJ0FGjn5q8$ zQgocgV6}M^xzv|Ai{3Dn?ogOfraysmv2DX-Zy&`yraec(`urZSy z-|DhG>eEoR)l!#&*)l%Wul`^#>uAe1IhyV0_fY?{Sin9;Od(*B@o?-r5?PVKL!h{YAx7Y8r;F1$@%)%bQf+WYlu zd~@q-U#XW;RbYl6jzCL~Yx0tvEU+`7QkjCqz}`L?jq_kisgiM*K6V#ZRHlZr*33%^ zyLg0hz0POzDf2h*I%y?YGrq8&2dL>T&|e9{L5-#4qu{O*y+dYgw278=KWwGn>aG`W z3f}G8xQ%Qf%hmc4%uD~yYvXj)mYsDrt144fKPP1}Ves7SYhn9cQg$A#Kb)fQ%1F4oi4`7oF04TVrKfNV{0H(xlN zi;?{P9Pb;-d{lOyCYgp!2f&J#DKjLYt1QE;^Cpp`ez!5vF=tTxyuB`2FZt zCR;&Oa;pchl?1T(eg;9^D@ymR%0DR3aoFG>Uf`Hj59QakM6|HW(?mwY+;By!!*x(J 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

q=%qni4UmLqA3d^CnD*FavH>>z7 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
50}KYAA+l{_^N>&ph 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