我有以下代码:
(defun Areacircle ()
(princ "Enter Radius: ")
(defparameter radius (read))
(defparameter area (* 3.1416 radius radius))
(princ "Area: ")
(write area))
(AreaCircle)
问题在于,slime运行它没有任何问题但是当我使用(compile-file“area.lisp”:output-file“area”)编译它时,它首先评估(读取)部分;它要求在打印任何东西之前将值传递给radius。
答案 0 :(得分:1)
代码中没有任何内容强制将(缓冲的)输出发送到终端。添加对(force-output)
或(finish-output)
的通话会有所帮助。
此外,您还应该使用defparameter
来使用let
。您最好使用pi
代替近似值,并使用format
和合适的格式字符串来打印结果。