Finish draft of part 11 of compiler series
This commit is contained in:
parent
8cbe59b6b2
commit
9fb9eec394
32
11/examples/list.txt
Normal file
32
11/examples/list.txt
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
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 }
|
17
11/examples/pair.txt
Normal file
17
11/examples/pair.txt
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
data Pair a b = { MkPair a b }
|
||||||
|
|
||||||
|
defn fst p = {
|
||||||
|
case p of {
|
||||||
|
MkPair a b -> { a }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defn snd p = {
|
||||||
|
case p of {
|
||||||
|
MkPair a b -> { b }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defn pair = { MkPair 1 (MkPair 2 3) }
|
||||||
|
|
||||||
|
defn main = { fst pair + snd (snd pair) }
|
Loading…
Reference in New Issue
Block a user