17 lines
474 B
Plaintext
17 lines
474 B
Plaintext
(defun compose (f g)
|
|
(lambda (x)
|
|
(funcall f
|
|
(funcall g x))))
|
|
|
|
(defun compose (funcs)
|
|
(lists:foldl #'compose/2
|
|
(lambda (x) x)
|
|
funcs))
|
|
|
|
(defun check ()
|
|
(let* ((sin-asin (compose #'math:sin/1 #'math:asin/1))
|
|
(expected (math:sin (math:asin 0.5)))
|
|
(compose-result (funcall sin-asin 0.5)))
|
|
(io:format '"Expected answer: ~p~n" (list expected))
|
|
(io:format '"Answer with compose: ~p~n" (list compose-result))))
|