c - 使用 C 宏制作 lisp 求值器

标签 c macros scheme lisp

<分区>

我正在阅读有关 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/

相关文章:

c - 迭代 int 数组时,每个宏都会引发 "Segmentation fault"

c - 如何实现为 _Pragma 创建带引号的字符串的宏?

scheme - Racket 捕获功能的结果

c - 定义的值比硬编码的数字慢

c - UART 不传输/打印超过一个字符

无法将文件名分配给vim中的环境变量

c - 为什么我的程序在提供输入后无法运行?

macros - Racket - 使用宏实现 let* 函数

lisp - 在没有程序的方案语言中使用 "map"?

c - 确定回溯递归算法中的基本条件