首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在函数中定义内部函数?

如何在函数中定义内部函数?
EN

Stack Overflow用户
提问于 2011-09-15 01:07:50
回答 1查看 323关注 0票数 0
代码语言:javascript
复制
(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)

代码语言:javascript
复制
 *** - 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

为什么内部功能“价格”不能使用?

真诚!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-15 01:21:16

对于函数和变量绑定,常见的Lisp有不同的名称空间;本页将对其进行详细解释:http://cl-cookbook.sourceforge.net/functions.html。我认为你想尝试的是:

代码语言:javascript
复制
(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))))))

未经测试!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7424798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档