我想使用lisp从用户输入中读取2个值。我希望将它们存储在变量中,以便在我的程序中使用它们。
到目前为止,我已经有了当前代码:
(defun le-posicao()
(let ((n_anel)
(pos_anel))
(princ "?")
(setf n_anel (read))
(setf pos_anel (read))
(when (and (integerp (n_anel)) (integerp (pos_anel)))
n_anel pos_anel)))我使用let函数创建局部变量,然后将从输入中读取的值存储在其中。
我的问题是,如何从输入中读取两个值,并将第一个值存储在一个变量中,将第二个值存储在另一个变量中?这些值应采用以下格式:
? value1 value2有人能帮我吗?
发布于 2011-12-01 00:42:36
您正在尝试强制使用Lisp。虽然这是可能的,但可能会有一点痛苦。
要使您的代码更具功能性,您应该创建名称并将值绑定到它们,而不是创建变量,然后对它们进行变异。
需要说明的是,let是一种特殊的形式,而不是一个函数;它们用于创建名称到值的词法范围绑定。
我相信你真正想做的是:
(let ((n_anel (read))
(pos_anel (read)))
(... code using but not modifying n_anel and pos_anel ...))这段代码避免了setf。
备注:
不确定Common-Lisp的let中的括号--我最近一直在使用Clojure!
我也不确定你是否正确使用了read。
https://stackoverflow.com/questions/8329404
复制相似问题