RosettaCodeData/Task/First-class-functions-Use-numbers-analogously/Common-Lisp/first-class-functions-use-numbers-analogously-1.lisp
2023-07-01 13:44:08 -04:00

20 lines
541 B
Common Lisp

(defun multiplier (f g)
#'(lambda (x) (* f g x)))
(let* ((x 2.0)
(xi 0.5)
(y 4.0)
(yi 0.25)
(z (+ x y))
(zi (/ 1.0 (+ x y)))
(numbers (list x y z))
(inverses (list xi yi zi)))
(loop with value = 0.5
for number in numbers
for inverse in inverses
for multiplier = (multiplier number inverse)
do (format t "~&(~A * ~A)(~A) = ~A~%"
number
inverse
value
(funcall multiplier value))))