From b9661b6d185fcb92e9106cfd174484489e0c8d78 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Mon, 2 Oct 2017 20:15:34 +0200 Subject: dos2unix --- assignment-3/genericMap.icl | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'assignment-3/genericMap.icl') 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 -- cgit v1.2.3