From f097b90b59e59fc43b43326ec1aa0d303b4a5bb2 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 26 Sep 2017 09:44:32 +0200 Subject: Start assignment 3 --- assignment-3/genericMap.icl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 assignment-3/genericMap.icl (limited to 'assignment-3/genericMap.icl') 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) + -- cgit v1.2.3