2016-08-21 35 views
0
> (procedure? +) 
#t 
> (procedure? (car '(+ 2 3))) 
#f 
> (list? '(+ 2 3)) 
#t 
> (symbol? (car '(+ 2 3))) 
#t 
> (define someList (list + 2 3)) 

> someList 

> '(#< procedure:+ > 2 3) 

> (procedure? (car someList)) 
#t 
> 

使用引號時,是否有可能被識別爲過程?關於計劃中的報價

+1

編號''+'是一個符號,因爲引用會阻止評估符號。 – uselpa

+0

[引用和列表有什麼區別?]可能的重複(http://stackoverflow.com/questions/34984552/what-is-the-difference-between-quote-and-list) –

回答

1

列表,矢量,符號,字符串,布爾值和數字具有字面表示的優點,而程序不具有字面表示。有人可能會爭辯說,由於可以在宏觀擴展時確定全局變量,甚至全局模塊綁定的文字表示形式是可行的,但是由於我們不是最好的方式來做你想要的就是使用quasiquote來評估一些地方:

`(,+ 1 2 3) ; ==> (#<procedure:+> 1 2 3) 

注意評估+了什麼都沒有與符號+相關這份名單。也知道符號+是數據,不要與變量+混淆。