diff options
author | Camil Staps | 2017-09-26 09:44:32 +0200 |
---|---|---|
committer | Camil Staps | 2017-09-26 09:45:58 +0200 |
commit | f097b90b59e59fc43b43326ec1aa0d303b4a5bb2 (patch) | |
tree | 6f895db974e4f1e4c2858bc1cd7fdada1272c3ce /assignment-3/genericMap.icl | |
parent | Preparing for hand-in (diff) |
Start assignment 3
Diffstat (limited to 'assignment-3/genericMap.icl')
-rw-r--r-- | assignment-3/genericMap.icl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/assignment-3/genericMap.icl b/assignment-3/genericMap.icl new file mode 100644 index 0000000..8d24d96 --- /dev/null +++ b/assignment-3/genericMap.icl @@ -0,0 +1,20 @@ +module genericMap
+
+import StdEnv, StdGeneric
+
+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)
+t = Bin (Bin Leaf 1 Leaf) 2 (Bin (Bin Leaf 3 Leaf) 4 Leaf)
+l = [1..7]
+
+Start = (l, t)
+
|