我最近一直在研究Clojure,我看到人们在不同的地方使用[],'[],()和'().在某些情况下,[]和'[]是可以互换的.
所以我想知道这两个符号之间有什么不同?
'<expr>是扩展为的读者语法(quote <expr>). quote是一种特殊的形式,表示"不要评估这个表达式,而是将其视为文字." 例如,x求值为的值x,而'x求值为其名称为的符号"x".
所以'()扩展到(quote ()),评估为().同样地[].因此空列表和空向量没有区别.
现在,让我们来看看'(x),这是(quote (x)).此计算结果为(x),包含该符号的文字列表x.获得相同结果的另一种方法是评估(list 'x).相反,评估(x)调用(或尝试调用)绑定的函数x.
类似的论点适用于'[x]对[x].
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |