在Ubuntu上,如果我跑MIT-計劃,它會顯示一個功能的程序:在Scheme或STk中,函數將顯示爲過程或閉包,但LISP爲什麼會給出錯誤?
1 ]=> (define (sq x) (* x x))
;Value: sq
1 ]=> (sq 3)
;Value: 9
1 ]=> sq
;Value 11: #[compound-procedure 11 sq]
和伯克利的STK將顯示sq
作爲封閉:
STk> (define (sq x) (* x x))
sq
STk> (sq 3)
9
STk> sq
#[closure arglist=(x) b73fab48]
爲什麼用Lisp( Common Lisp clisp),當我做同樣的事情時,它會給我一個錯誤,而如何顯示一個函數作爲一個值(第一類值/對象)?
[1]> (defun sq(x) (* x x))
SQ
[2]> (sq 3)
9
[3]> sq
*** - SYSTEM::READ-EVAL-PRINT: variable SQ has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of SQ.
STORE-VALUE :R2 Input a new value for SQ.
ABORT :R3 Abort main loop
它的工作原理。它會顯示'#' –