简单的IO指令;改为;用于新lisp用户的命令

简单的IO指令;改为;用于新lisp用户的命令,io,lisp,Io,Lisp,我是一个新的lisp用户。我花了大约一个小时的时间通过谷歌搜索和寻找示例,试图弄清楚如何使用LispRead命令。我失败了,终于认输了 有人能给我一个非常简单的lisp函数的例子,它将接受2个输入,并添加它们吗 我的最佳尝试: (defun func () (print "Enter first integer") (read) (print "Enter second integer") (read) (print (+ A B)) ) 我尝试过使用(reada)或前缀来读取(format

我是一个新的lisp用户。我花了大约一个小时的时间通过谷歌搜索和寻找示例,试图弄清楚如何使用LispRead命令。我失败了,终于认输了

有人能给我一个非常简单的lisp函数的例子,它将接受2个输入,并添加它们吗

我的最佳尝试:

(defun func ()
(print "Enter first integer")
(read)
(print "Enter second integer")
(read)
(print (+ A B))
)

我尝试过使用
(reada)
或前缀来读取
(format t”~A“string)
,但运气不佳。我一直在寻找的互联网上的所有信息都极其复杂,我无法理解。真的应该这么难吗?我可能对bash/ksh/csh/sh太熟悉了。

您从未将读取输入分配给变量:

(defun func ()
  (print "Enter first integer") 
  (finish-output)
  (let ((a (read)))
    (print "Enter second integer")
    (finish-output)
    (let ((b (read)))
      (print (+ a b)))))

这是可行的,但是除了使用嵌套的
let
语句之外,还有其他方法将输入分配给变量吗?您不喜欢
let
的什么地方?缩进?因为它是封装的,所以a和b变量只有在关闭初始let子句之前才可行吗?是的,这就是重点,它们是let的局部变量。有其他选择,但这是推荐的方法。如果需要,您的函数总是可以将它们的值返回给调用方。常见的可移植性错误:输出可以缓冲。在读取之前,需要在输出函数之后调用
FINISH-OUTPUT
。另外:
PRINT
不是输出文本字符串的最佳函数。使用
格式
写入
写入行