LISP 动态函数?

标签 lisp common-lisp

我正在尝试自学一些 LISP,虽然我了解其中的大部分内容,但我很难掌握 eval 函数。我知道它已经为我们做到了,而且它不好用(我听说),但我如何制作一个只添加的函数?

到目前为止我正在尝试/思考

(setf input-prompt "Enter addition epression: ")
(setf output-prompt "The value is: ")

(defun prompt-for-input (msg)
  (format t msg))


(defun sum (expression)
  (format t "Summing ~d and ~d.~%" x y)
  (+ x y))


(defun add ()
  (prompt-for-input input-prompt)
  (let ((expression (read)))
       ((sum (expression)))
  (add)))

不太确定该从哪里开始,感谢任何帮助。

最佳答案

(setf input-prompt "Enter addition expression: ")
(setf output-prompt "The value is: ")

(defun prompt-for-input (msg)
  (format t msg)
  (finish-output))

(defun sum (expression)
  (let ((x (second expression))
        (y (third expression)))
    (format t "~%Summing ~d and ~d.~%" x y)
    (+ x y)))

(defun add ()
  (prompt-for-input input-prompt)
  (sum (read)))

运行它:

CL-USER > (add)
Enter addition expression: (+ 1 2)
Summing 1 and 2.
3

关于LISP 动态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019891/

相关文章:

lisp - 是否有通用的 lisp 包命名约定?

lisp - 如何计算列表中元素的数量?

lisp - 如何让 Lisp 忘记以前导出的符号?

functional-programming - SICP - 阶乘的命令式与功能式实现

方案:附加到本地环境

lisp - finally 后立即循环关键字

方案 : recursive process much faster than iterative

list - 为什么我的 lisp 函数返回 'NIL'

lisp - 我如何让 Ltk 显示用户正在写的内容以及函数打印的内容?

macros - Lisp SBCL 宏引用列表作为参数