【发布时间】:2013-07-29 18:25:41
【问题描述】:
是什么阻止了像 C 这样的语言拥有 Lisp 宏? C 在编译过程中的哪个阶段放弃了操作其代码树的能力?
而且,这具体是解释还是编译问题?
【问题讨论】:
-
“是什么阻止了像 C 这样的语言拥有 Lisp 宏?” - 其创造者的理智。
-
Perl6 有类似 C 的 Algol 语法,它应该有 parse time subs and operator overloading
-
Nemerle 是一种在语法上更类似于 C 语言的示例,它具有类似 Lisp 的宏。但我对此知之甚少。 HaXe 也有类似的宏系统。然而,C 存在固有的问题,尤其是与维护相关的问题,这使得复杂的宏不受欢迎。调试就是这样一个问题,语法的原始歧义和大量鲜为人知但仍然有效的编写相同内容的方法是另一个问题。这可以解释为什么早期对 C 进行改进的尝试与使用宏的想法(想想 D、ADA 等)作斗争
-
完全有可能 - 看看 Nemerle、Converge、PFront、Template Haskell、MetaOCaml、MetaLua 和其他类似语言。
标签: c compiler-construction macros lisp language-design