Added student numbers
[fp1415.git] / fp1 / week5 / camil / Origami.icl
1 module Origami
2
3 import StdEnv
4
5 Start = and
6 [ sum` [1 .. 5] == sum [1 .. 5]
7 , prod` [1 .. 5] == prod [1 .. 5]
8 , flatten` [[],[1],[1,2],[1,2,3]] == flatten [[],[1],[1,2],[1,2,3]]
9 , reverse` [1 .. 5] == reverse [1 .. 5]
10 , takeWhile` ((<>) 0) [1,2,3,0,4,5,6] == takeWhile ((<>) 0) [1,2,3,0,4,5,6]
11 , maxList` [1 .. 5] == maxList [1 .. 5]
12 ]
13
14 sum` = foldr (+) 0
15 prod` = foldr (*) 1
16 flatten` = foldr (++) []
17 length` = foldl (\l e = l + 1) 0
18 reverse` = foldl (\xs x = [x:xs]) []
19 takeWhile` _ [] = []
20 takeWhile` p xs
21 | p (xs!!0) = take (maxList [i \\ i <- [0..length xs-1] | foldr (&&) True [p (xs!!j) \\ j <- [0..i]]] + 1) xs
22 | otherwise = []
23 maxList` [] = undef
24 maxList` [x:xs] = foldr max x xs