嗨新手在这里试图学习lisp并且我很困惑为什么lisp在输出结束时打印出NIL?有没有办法让它不打印NIL或我的if语句设置不正确。
(defun greater (x)
(if (> x 4)
(message "number is greater than 4")))
获得结果:
[2]> (square 10)
number greater than 4
NIL
答案 0 :(得分:3)
所有顶级表单都由Read-Eval-Print-Loop打印。以下是如何避免它:
;;; make a main function
(defun main ()
;; all your program top level forms here!
(values)) ; empty values return no value and the REPL will not print anything when your program terminates
;; call main
(main)
当然,在交互式会话中,您希望打印出结果,以便您可以输入(+ 2 3)
并获取5
,而无需将其包装在打印语句中。
答案 1 :(得分:2)
这只是你的功能的返回值。 REPL(交互式评估)显示您输入的每个表达式的结果。致电greater
功能的结果是NIL
。