Files
psil/clitests/decorate.test.psil
2024-01-04 12:53:24 +01:00

20 lines
561 B
Plaintext

(define (decorate f g)
(lambda (x) (g (f x)))
)
(define (fold op acc l)
(if (nil? l)
acc
(op (car l) (fold op acc (cdr l)))
)
)
(define (plus a b)
(+ a b)
)
((decorate (lambda (x) (+ x 1)) (lambda (x) (+ x 2))) 1)
((decorate (lambda (lst) (fold plus 0 lst)) (lambda (x) (* x x))) (quote(1 2 3)))
((decorate (lambda (lst) (fold plus 0 lst)) (lambda (x) (/ x 2))) (quote(1 2 3)))
((decorate (lambda (lst) (fold plus 0 lst)) (lambda (x) (= x 0))) (nil))
((decorate (lambda (lst) (fold plus 0 lst)) (lambda (x) (= x 0))) (quote(1)))