Common Lisp中的奇数(读)问题(sbcl)

时间:2015-10-12 16:49:27

标签: compilation common-lisp

我有以下代码:

(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。

1 个答案:

答案 0 :(得分:1)

代码中没有任何内容强制将(缓冲的)输出发送到终端。添加对(force-output)(finish-output)的通话会有所帮助。

此外,您还应该使用defparameter来使用let。您最好使用pi代替近似值,并使用format和合适的格式字符串来打印结果。