Common LISP中提供了两个函数对象来调用函数 funcall 与apply
下面的函数是一个画点的函数,使用funcall函数
(defun plot (fn min max step)
(loop for i from min to max by step do
(loop repeat (funcall fn i) do (format t "*"))
(format t "~%")))
调用内置的exp函数
CL-USER> (plot #'exp 0 4 0.5)
*
*
**
****
*******
************
********************
*********************************
******************************************************
NIL
绘制函数2x的函数:
(defun double (x) (* 2 x))
进行调用:
CL-USER> (plot #'double 0 10 1)
**
****
******
********
**********
************
**************
****************
******************
********************
NIL
也可以直接匿名调用
CL-USER> (plot #'(lambda (x) (* 2 x )) 0 10 1)
**
****
******
********
**********
************
**************
****************
******************
********************
NIL