2016-08-21 2 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) 

注意してください。また、シンボル+はデータであり、変数+と混同しないでください。