grino/examples/fun.gri

53 lines
854 B
Plaintext
Raw Normal View History

2023-09-11 18:59:54 +00:00
;; declare lambda
($ a (-> (x) (* x 2)))
(assert-eq? 14 (a 7))
;; high order function
($ b (-> (x y) (x (x y))))
(assert-eq? 12 (b a 3))
;; calling function literal
(assert-eq? 7 ( (-> (x y) (+ x y 1)) 2 4 ))
;; syntaxic sugar for function declaration
($ (c n) (* 2 n))
(assert-eq? 18 (c 9))
;; inner variable
($ (d x) ($ y 3) (+ x y))
2023-09-12 09:05:34 +00:00
(assert-eq? 7 (d 4))
;; recursivity
($ (e n)
(if (eq? 0 n) 1
(* n (e (- n 1)))))
(assert-eq? 120 (e 5))
;; self keyword
(assert-eq? 720 ((-> (x)
(if (eq? x 0)
1
(* x (self (- x 1))))) 6))
;; inner functions
($ (f n)
($ (inner n) (+ n 1))
(inner (inner n)))
(assert-eq? 3 (f 1))
;; return function
($ (g)
($ (inner n) (* 7 n))
inner)
(assert-eq? 42 ( (g) 6 ))
;; return lambda
($ (h)
(-> (n)
(* 3 (- n 2))))
2023-09-12 10:20:29 +00:00
(assert-eq? 15 ( (h) 7 ))