1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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
maxList` [] = undef
maxList` [x:xs] = foldr max x xs
|