diff options
author | Camil Staps | 2016-02-02 19:24:50 +0100 |
---|---|---|
committer | Camil Staps | 2016-02-02 19:24:50 +0100 |
commit | a7d7542dc646a5fd124ef71e71ce260889f1701b (patch) | |
tree | 04ed89503bbb3cc9933273a1326a53ca724c3492 /1415/fp1/week5 | |
parent | week6 camil: working positioning of lines by putting empties at left and righ... (diff) |
Diffstat (limited to '1415/fp1/week5')
-rw-r--r-- | 1415/fp1/week5/camil/Origami.icl | 24 | ||||
-rw-r--r-- | 1415/fp1/week5/mart/Origami.icl | 16 |
2 files changed, 40 insertions, 0 deletions
diff --git a/1415/fp1/week5/camil/Origami.icl b/1415/fp1/week5/camil/Origami.icl new file mode 100644 index 0000000..74362a9 --- /dev/null +++ b/1415/fp1/week5/camil/Origami.icl @@ -0,0 +1,24 @@ +module Origami
+
+import StdEnv
+
+Start = and
+ [ sum` [1 .. 5] == sum [1 .. 5]
+ , prod` [1 .. 5] == prod [1 .. 5]
+ , flatten` [[],[1],[1,2],[1,2,3]] == flatten [[],[1],[1,2],[1,2,3]]
+ , reverse` [1 .. 5] == reverse [1 .. 5]
+ , takeWhile` ((<>) 0) [1,2,3,0,4,5,6] == takeWhile ((<>) 0) [1,2,3,0,4,5,6]
+ , maxList` [1 .. 5] == maxList [1 .. 5]
+ ]
+
+sum` = foldr (+) 0
+prod` = foldr (*) 1
+flatten` = foldr (++) []
+length` = foldl (\l e = l + 1) 0
+reverse` = foldl (\xs x = [x:xs]) []
+takeWhile` _ [] = []
+takeWhile` p xs
+ | p (xs!!0) = take (maxList [i \\ i <- [0..length xs-1] | foldr (&&) True [p (xs!!j) \\ j <- [0..i]]] + 1) xs
+ | otherwise = []
+maxList` [] = undef
+maxList` [x:xs] = foldr max x xs
diff --git a/1415/fp1/week5/mart/Origami.icl b/1415/fp1/week5/mart/Origami.icl new file mode 100644 index 0000000..180a119 --- /dev/null +++ b/1415/fp1/week5/mart/Origami.icl @@ -0,0 +1,16 @@ +/**
+ * Mart Lubbers, s4109503
+ * Camil Staps, s4498062
+ */
+
+module Origami
+
+import StdEnv
+
+sum` = foldr (+) 0
+prod` = foldr (*) 1
+flatten` = foldr (++) []
+length` = foldr (\x l=l+1) 0
+reverse` = foldl (\xs x=[x:xs]) []
+takeWhile` p = foldr (\x xs=if (p x) [x:xs] []) []
+maxList` [x:xs] = foldr max x xs
|