|
|
1
9
静态类型并不排除宏。例如,静态类型 Boo language has macros . 所以 Nemerle . 然而,这取决于格雷厄姆所说的“真”宏是什么意思。也许boo和nemerle宏在他的标准上是“错误的”。 |
|
|
2
2
静态类型排除宏并不是真的,但它通常意味着宏系统需要比许多人熟悉的不卫生的文本替换宏更复杂。我不确定格雷厄姆到底想说什么,也不知道他说的“真正的”宏是什么意思。 见 this paper 例如,在静态类型的上下文中使用卫生宏。 (顺便说一下,我也不同意没有宏的语言是不值得使用的。我认为,一级函数与一些更复杂的现代类型系统相结合,可以优雅地解决大多数传统宏所面临的问题。) |
|
|
3
2
没有“真正的宏”的定义,这是一个毫无意义的声明,但ocaml在paul graham编写之前既有静态类型,也有(ast重写)宏。他本可以自己轻易地发现这一点,但显然没有。我甚至看不到逻辑上的理由相信静态类型排除了宏。
我什么都不知道。Lisp风格的宏现在不流行。 记住,paul graham是一个哲学专业的学生,他用lisp编写了一个购物车,被雅虎收购并随后重写。他赚了很多钱,很年轻就退休了,然后花了好几年时间写这样的东西。 |
|
|
4
1
系统不推断类型的静态类型会阻止真正的通用宏,因为宏的输出必须在非常严格的意义上保持类型安全。 |
|
|
5
0
保罗·格雷厄姆是 "the whole language there all the time" :
因此,他可能指的是在运行时用一种语言定义新类型的实际不可能性,这种语言希望在编译时拥有所有类型信息,如daniel ribeiro points out on his blog :
我敢肯定,如果程序员怀疑这种能力值得放弃静态类型带来的好处,那么您一定会找到他们的。 |
|
TSG · 创建定义编译器变量并调用方法的C++宏 1 年前 |
|
Edward Falk · 你能比较C预处理器中的两个常量指针吗? 1 年前 |
|
|
ma1169 · 宏:不应忽略void值 2 年前 |
|
|
Bhargav Patil · 运算符的大小并尝试打印数组 2 年前 |
|
|
David Robie · VIM:寄存器中填充字符断点宏的有向图 2 年前 |
|
|
Sofia Zaiafarova · 定义宏并使用数据类型查找绝对值 2 年前 |
|
|
Daniel Muñoz · C[重复]中类宏函数的语法 2 年前 |
|
|
SupAl · 避免在没有宏的情况下构建对象 2 年前 |