From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/fp1/week5/camil/Origami.icl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 1415/fp1/week5/camil/Origami.icl (limited to '1415/fp1/week5/camil') 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 -- cgit v1.2.3