(defun div618 (p1 p2)
"golden split"
(let ((ratio '(0. 0.191 0.236 0.382 0.5 0.618 0.809 1.))
(price (lambda (r) (if (<= p1 p2) (+ p1 (* (- p2 p1) r)) (- p1 (* (- p1 p2) r))))))
(if (<= p1 p2)
(dolist (r (reverse ratio)) (format t "-------~d ~d-------~%" r (price r)))
(dolist (r ratio) (format t "-------~d ~d-------~%" r (price r))))))(div618 1600 000)
*** - EVAL: undefined function PRICE
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of (FDEFINITION 'PRICE).
RETRY :R2 Retry
STORE-VALUE :R3 Input a new value for (FDEFINITION 'PRICE).
ABORT :R4 Abort main loop为什么内部功能“价格”不能使用?
真诚!
发布于 2011-09-15 01:21:16
对于函数和变量绑定,常见的Lisp有不同的名称空间;本页将对其进行详细解释:http://cl-cookbook.sourceforge.net/functions.html。我认为你想尝试的是:
(defun div618 (p1 p2)
"golden split"
(let ((ratio '(0. 0.191 0.236 0.382 0.5 0.618 0.809 1.))
(price (function (lambda (r) (if (<= p1 p2) (+ p1 (* (- p2 p1) r)) (- p1 (* (- p1 p2) r)))))))
(if (<= p1 p2)
(dolist (r (reverse ratio)) (format t "-------~d ~d-------~%" r (funcall price r)))
(dolist (r ratio) (format t "-------~d ~d-------~%" r (funcall price r))))))未经测试!
https://stackoverflow.com/questions/7424798
复制相似问题