3

据说代码是 Rebol 和 Red 中的数据(反之亦然,即同音符号)。此外,据说无法区分两者。我的理解是这里有两种情况:

  1. 从代码和数据的混合 确定代码
  2. 从代码和数据的混合 确定数据

代码和数据的混合是我的名字,外人通常称之为 Rebol 代码,而有经验的 Rebol 程序员则说是数据(没有代码,只有数据)

动机

代码与数据的区别使编程语言中的某些功能更容易。例如,提到了反汇编(sbcl 具有该disassemble功能)。

问题

这些有问题的案例有哪些例子?

语境:

来自 2017 年 3 月 15 日下午 3:32 的聊天:(强调我的)

Didec:你忘记了 Redbol 中没有代码,只有数据。

Maximvl:嗯,CL 和 SBCL 都是一样的

在 Lisp 语言中不一样,“代码”和“数据”[在 Lisp 中] 之间存在区别,因为代码必须以call开头。Redbol 对代码没有这样的限制,这使得它非常不同。

还:

此外,上下文和动态绑定使其更加灵活,但同时,像在您的 CL 示例中那样直接转换为低级汇编代码是不可能的

旁白:这是否意味着 Rebol 比 Lisp 更具有谐音性?

4

1 回答 1

1

这是一个:

[q]

外人会认出 Q 函数并将其视为代码块,而 Rebol 内人会知道它必须是数据,因为 Q 仅从解释器的顶层调用。

于 2017-08-25T03:17:07.987 回答