我想使用 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
有人可以帮助我吗?
您正在尝试命令式地使用 Lisp。虽然这是可能的,但可能会有点痛。
为了使您的代码更具功能性,而不是创建变量然后改变它们,您应该创建名称并将值绑定(bind)到它们。
澄清一下,let
是一种特殊形式,而不是函数;它们用于创建名称到值的词法范围绑定(bind)。
我相信你真正想做的是:
(let ((n_anel (read))
(pos_anel (read)))
(... code using but not modifying n_anel and pos_anel ...))
这段代码避免了setf
。
注意事项:
不确定 Common-Lisp 的 let
中的括号 -- 我最近一直在使用 Clojure!
也不确定您是否正确使用了read
。
我是一名优秀的程序员,十分优秀!