diff options
| -rw-r--r-- | examples/test.lisp | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/examples/test.lisp b/examples/test.lisp index 9930181..6608fae 100644 --- a/examples/test.lisp +++ b/examples/test.lisp @@ -1,30 +1,9 @@ -;; (let map (\[f lst] -;; (match lst -;; [] [] -;; (prepend (f (head lst)) (map f (tail lst)))))) - -;; (map (+ 1) [1 2 3]) - -;; (let mapinc (\[vec] -;; (match vec -;; [] [] -;; (prepend -;; (+ 1 (head vec)) -;; (mapinc (tail vec)))))) -;; (env) -;; (mapinc [1 2 3]) - -;; (let fibo (\[n] -;; ;; (let fibo-1 (\[] (fibo (sub2 n 1)))) -;; ;; (let fibo-2 (\[] (fibo (sub2 n 2)))) -;; (match n -;; 0 0 -;; 1 1 -;; (+ -;; (fibo (- n 1)) -;; (fibo (- n 2)))))) +(let map (\[f lst] + (match lst + [] [] + (prepend (f (head lst)) (map f (tail lst)))))) -;; (fibo 10) +(map (+ 1) [1 2 3]) (let foldr (\[f accumulator lst] (match lst @@ -32,3 +11,28 @@ (f (foldr f accumulator (tail lst)) (head lst))))) (foldr + 0 [1 2 3]) + +(let filter (\[pred lst] + (match lst + [] [] + (match (pred (head lst)) + 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]) + +(let fibo (\[n] + (match n + 0 0 + 1 1 + (+ + (fibo (- n 1)) + (fibo (- n 2)))))) + +(fibo 10) |
