forked from idris-lang/Idris-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestmap.iif
30 lines (22 loc) · 808 Bytes
/
testmap.iif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
data Nil 0
data Cons 2
fun twice(f, x) = f(f(x))
fun map(f, xs) = case xs of {
Nil => Nil
| Cons(y, ys) => Cons(f(y), map(f, ys))
}
fun dumpList(xs) = case xs of {
Nil => "END"
| Cons(y, ys) => %IntString(y) ++ ", " ++ dumpList(ys)
}
fun countFrom(x) = Cons(x, countFrom@(x+1))
fun take(n, xs) = case n of {
0 => Nil
| _ => case xs of {
Nil => Nil
| Cons(y, ys) => Cons(y, take(n-1, ys))
}
}
fun double(x) = x + x
fun main() = let mult = 2 in
%WriteString(dumpList(map(twice(\ x => x*mult), take(1010, countFrom(10)))))