summaryrefslogtreecommitdiff
path: root/assignment-3/genericMap.icl
diff options
context:
space:
mode:
authorCamil Staps2017-10-02 20:15:34 +0200
committerCamil Staps2017-10-02 20:15:34 +0200
commitb9661b6d185fcb92e9106cfd174484489e0c8d78 (patch)
tree8a097ccd189a47e8e2254d1f0391d6a07f1e473d /assignment-3/genericMap.icl
parentCleanup bootstrap (diff)
dos2unix
Diffstat (limited to 'assignment-3/genericMap.icl')
-rw-r--r--assignment-3/genericMap.icl74
1 files changed, 37 insertions, 37 deletions
diff --git a/assignment-3/genericMap.icl b/assignment-3/genericMap.icl
index 6ea1bf4..f2d99e2 100644
--- a/assignment-3/genericMap.icl
+++ b/assignment-3/genericMap.icl
@@ -1,37 +1,37 @@
-module genericMap
-
-import StdEnv
-import StdGeneric
-import GenEq
-
-generic gMap a b :: a -> b
-gMap{|Int|} x = x
-gMap{|Real|} x = x
-gMap{|UNIT|} x = x
-gMap{|PAIR|} f g (PAIR x y) = PAIR (f x) (g y)
-gMap{|EITHER|} f g (LEFT x) = LEFT (f x)
-gMap{|EITHER|} f g (RIGHT x) = RIGHT (g x)
-gMap{|CONS|} f (CONS x) = CONS (f x)
-gMap{|OBJECT|} f (OBJECT x) = OBJECT (f x)
-
-:: Bin a = Leaf | Bin (Bin a) a (Bin a)
-
-derive gMap [], (,), Bin
-
-t = Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 4 Leaf)
-l = [1..7]
-
-// Part 1
-Start = gMap{|*->*|} fac t
- // (Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 5 Leaf))
-Start = gMap{|*->*|} (\i -> (i, fac i)) l
- // [(1,1),(2,2),(3,3),(4,5),(5,8),(6,13),(7,21)]
-Start = gMap{|*->*->*|} (gMap{|*->*|} fac) (gMap{|*->*|} fac) (l,t)
- // ([1,2,3,5,8,13,21],(Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 5 Leaf)))
-
-// Part 2
-Start = gEq{|*|} [1,2] [1,2] // True
-Start = gEq{|*|} [1,2] [2,3] // False
-Start = gEq{|*->*|} (\a b -> not (a < b || b < a)) [1,2] [2,3] // False
-
-fac n = let fs = [1:1:[(fs!!(i-1)) + (fs!!(i-2)) \\ i <- [2..]]] in fs !! n
+module genericMap
+
+import StdEnv
+import StdGeneric
+import GenEq
+
+generic gMap a b :: a -> b
+gMap{|Int|} x = x
+gMap{|Real|} x = x
+gMap{|UNIT|} x = x
+gMap{|PAIR|} f g (PAIR x y) = PAIR (f x) (g y)
+gMap{|EITHER|} f g (LEFT x) = LEFT (f x)
+gMap{|EITHER|} f g (RIGHT x) = RIGHT (g x)
+gMap{|CONS|} f (CONS x) = CONS (f x)
+gMap{|OBJECT|} f (OBJECT x) = OBJECT (f x)
+
+:: Bin a = Leaf | Bin (Bin a) a (Bin a)
+
+derive gMap [], (,), Bin
+
+t = Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 4 Leaf)
+l = [1..7]
+
+// Part 1
+Start = gMap{|*->*|} fac t
+ // (Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 5 Leaf))
+Start = gMap{|*->*|} (\i -> (i, fac i)) l
+ // [(1,1),(2,2),(3,3),(4,5),(5,8),(6,13),(7,21)]
+Start = gMap{|*->*->*|} (gMap{|*->*|} fac) (gMap{|*->*|} fac) (l,t)
+ // ([1,2,3,5,8,13,21],(Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 5 Leaf)))
+
+// Part 2
+Start = gEq{|*|} [1,2] [1,2] // True
+Start = gEq{|*|} [1,2] [2,3] // False
+Start = gEq{|*->*|} (\a b -> not (a < b || b < a)) [1,2] [2,3] // False
+
+fac n = let fs = [1:1:[(fs!!(i-1)) + (fs!!(i-2)) \\ i <- [2..]]] in fs !! n