学习LISP。为什么NIL在使用if语句结束函数后打印出来

时间:2017-10-01 21:19:38

标签: lisp common-lisp clisp

嗨新手在这里试图学习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

2 个答案:

答案 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