<分区>
我正在阅读有关 C 宏系统的章节,发现我可以定义一些简单的类似 lisp 的求值器。
#define add(x,y) ((x)+(y))
#define mult(x,y) ((x)*(y))
#define sub(x,y) ((x)-(y))
#define eval(x) main(){printf("%d\n",(x));}
eval( mult (sub(10,2) , add(6,2)))
当然这只是个玩笑,但是有没有机会用宏系统做完整的方案评估器呢?
<分区>
我正在阅读有关 C 宏系统的章节,发现我可以定义一些简单的类似 lisp 的求值器。
#define add(x,y) ((x)+(y))
#define mult(x,y) ((x)*(y))
#define sub(x,y) ((x)-(y))
#define eval(x) main(){printf("%d\n",(x));}
eval( mult (sub(10,2) , add(6,2)))
当然这只是个玩笑,但是有没有机会用宏系统做完整的方案评估器呢?
最佳答案
不,宏图灵不完整。另一方面,C++ 模板是图灵完备的,它是一种严格的函数式语言,但可以用它编写类似于 lisp 的东西以在编译时创建函数。但是,它可能会使用大量内存进行缓慢的编译。
关于c - 使用 C 宏制作 lisp 求值器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271615/