aboutsummaryrefslogtreecommitdiffstats
path: root/examples/test.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/test.lisp')
-rw-r--r--examples/test.lisp36
1 files changed, 21 insertions, 15 deletions
diff --git a/examples/test.lisp b/examples/test.lisp
index 5f1dcf4..27275a0 100644
--- a/examples/test.lisp
+++ b/examples/test.lisp
@@ -1,3 +1,23 @@
+(let compose (\[f g]
+ (\[x] (f (g x)))))
+
+((compose (+ 1) (+ 2)) 3)
+
+(let mod (\[n k]
+ (- n (* k (/ n k)))))
+
+(let not (\[b]
+ (match b
+ true false
+ false true)))
+
+(let is-even (\[n]
+ (match (mod n 2)
+ 0 true
+ 1 false)))
+
+(let is-odd (compose not is-even))
+
;; map :: (a -> b) -> [a] -> [b]
(let map (\[f lst]
(match lst
@@ -22,13 +42,7 @@
true (prepend (head lst) (filter pred (tail lst)))
false (filter pred (tail lst))))))
-(let pred (\[n]
- (match n
- 2 true
- 4 true
- false)))
-
-(filter pred [0 1 2 3 4 5])
+(filter is-even [0 1 2 3 4 5])
(let fibo (\[n]
(let lazy fibo-1 (fibo (- n 1)))
@@ -40,9 +54,6 @@
(fibo 10)
-(let mod (\[n k]
- (- n (* k (/ n k)))))
-
(let reverse_ (\[v a]
(let lazy x (head v))
(let lazy xs (tail v))
@@ -55,8 +66,3 @@
(reverse_ v [])))
(reverse [1 2 3])
-
-(let compose (\[f g]
- (\[x] (f (g x)))))
-
-((compose (+ 1) (+ 2)) 3)