据说Rebol和Red中的代码是数据(反之亦然,即homoiconic)。 而且,据说不可能区分这两者。 我的理解是这里有2个案例:
代码和数据的混合是我的名字,外人通常称之为Rebol代码,经验丰富的Rebol程序员说是数据(没有代码,只有数据)
代码与数据的区别使编程语言中的某些功能更容易。
对于例如提到了反汇编(sbcl具有disassemble
函数)。
这些有问题的案例有哪些例子?
from chat on March 15, 2017 3:32 PM :(强调我的)
Didec:你忘记了Redbol中没有代码,只有数据。
Maximvl:嗯,对于CL和SBCL都是一样的,所有内容都符合本机代码,因为代码=数据,可以说没有数据,只有代码
在Lisp语言中不相同, 区分“代码”和“数据”[在Lisp中],因为代码必须以呼叫。 Redbol对代码没有这样的限制,这使得它非常不同。
也:
此外,上下文和动态绑定使其更加灵活,但与此同时,直接转换为低级汇编代码,就像在CL示例中一样,是不可能的。
旁白:这是否意味着Rebol比Lisp更加同源?
答案 0 :(得分:1)
这是一个:
[q]
局外人会识别Q函数并将其视为代码块,而Rebol内部人员将知道它必须是数据,因为Q仅从解释器的顶层调用。