-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.mky
More file actions
75 lines (68 loc) · 1.3 KB
/
test.mky
File metadata and controls
75 lines (68 loc) · 1.3 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
let map = fn(arr, func) {
let iter = fn(arr, acc) {
if (arr.len() == 0) {
return acc
} else {
iter(arr.rest(), push(acc, func(arr.first())))
}
}
iter(arr, [])
};
let forEach = fn(arr, action) {
let iter = fn(arr) {
if (arr.len() > 0) {
action(arr.first())
iter(arr.rest())
}
}
iter(arr);
arr;
};
let acc = fn(arr, initial, f) {
let iter = fn(arr, curr) {
if (arr.len() == 0) {
return curr
} else {
iter(arr.rest(), f(curr, arr.first()))
}
}
iter(arr, initial)
};
let arr_all = fn(arr, pred) {
let iter = fn(arr) {
if (arr.len() == 0) {
return true
}
if (!pred(arr.first())) {
return false
} else {
return iter(arr.rest())
}
};
iter(arr)
};
let arr_any = fn(arr, pred) {
let iter = fn(arr) {
if (arr.len() == 0) {
return false
}
if (pred(arr.first())) {
return true
} else {
return iter(arr.rest())
}
};
iter(arr)
};
let d = 4;
puts([2, 3, 1].arr_all {x -> x < 4});
[1, 2, 3] .map {x -> x * 2} .forEach {x -> puts(x)} .acc(100) {x, y -> x + y } .puts();
let fun = fn(x) {
let iter = fn(n) {
if (n == 0) {
} else {
iter(x-1);
}
};
};
fun(2);