33 lines
593 B
Plaintext
33 lines
593 B
Plaintext
data List a = { Nil, Cons a (List a) }
|
|
|
|
defn map f l = {
|
|
case l of {
|
|
Nil -> { Nil }
|
|
Cons x xs -> { Cons (f x) (map f xs) }
|
|
}
|
|
}
|
|
|
|
defn foldl f b l = {
|
|
case l of {
|
|
Nil -> { b }
|
|
Cons x xs -> { foldl f (f b x) xs }
|
|
}
|
|
}
|
|
|
|
defn foldr f b l = {
|
|
case l of {
|
|
Nil -> { b }
|
|
Cons x xs -> { f x (foldr f b xs) }
|
|
}
|
|
}
|
|
|
|
defn list = { Cons 1 (Cons 2 (Cons 3 (Cons 4 Nil))) }
|
|
|
|
defn add x y = { x + y }
|
|
defn sum l = { foldr add 0 l }
|
|
|
|
defn skipAdd x y = { y + 1 }
|
|
defn length l = { foldr skipAdd 0 l }
|
|
|
|
defn main = { sum list + length list }
|