From 4e83f1c68a4306d819994fd04b5cbd6af682bbd0 Mon Sep 17 00:00:00 2001 From: Shinya Sato Date: Thu, 29 Dec 2022 22:23:56 +0900 Subject: Create map.in --- sample/map.in | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sample/map.in diff --git a/sample/map.in b/sample/map.in new file mode 100644 index 0000000..08f457c --- /dev/null +++ b/sample/map.in @@ -0,0 +1,44 @@ +// Map operation + +// target function +inc(r)><(int i) => r~(i+1); +subPair(r)><(int m, int n) => r~(m-n); + + +// ----------- main (with the built-in Map and `%' notation) ----------- +Map(r, %inc) ~ [1,2,3]; +r; // r ->[2,3,4] + +Map(rr, %subPair) ~ [(10,2), (30,13)]; +rr; // r4 ->[8,17] + + + + +// ----------- main (without the built-in Map) ----------- +// map +map(result, f) >< [] => result~[], Eraser~f; +map(result, f) >< x:xs => Dup(f1,f2)~f, + result~w:ws, + f1 ~ (w, x), map(ws, f2)~xs; + + +// --- map application without the `%' notation --- +map(r1, (a, inc(a))) ~ [10,11,12]; +r1; // r1 ->[11,12,13] + +map(r2, (a, subPair(a))) ~ [(10,2), (30,13)]; +r2; // r2 ->[8,17] + + +// --- map application with the `%' notation --- +map(r3, %inc) ~ [1,2,3]; +r3; // r3 ->[2,3,4] + +map(r4, %subPair) ~ [(10,2), (30,13)]; +r4; // r4 ->[8,17] + + + + + -- cgit v1.2.3