1
21
按照惯例,匿名宏的表示形式是
> (defmacro triple(x)`(+,x,x,x)) 三倍的 > (符号功能‘三重’) (宏lambda(x)(\ `(+(\,x)(\,x)(\,x)))
虽然在Emacs中事情不是这样工作的,但唯一要做的就是为这样的表单提供足够的语义。也就是说,什么时候
您可以通过向最外层添加子句来实现这一点。
此代码仅适用于单参数宏。修复涉及编写辅助函数的问题
测试,定义
在这之后你会 > (符号函数'cadr.) (宏lambda(x)(列表。(引用汽车)(列表。(引用cdr)x)))
您可以构造一个应用此
Y 塔达! |
2
3
“您可以在30行lisp中实现一个宏系统。你所需要的只是阅读,这很容易。” https://gist.github.com/1712455 |
Imad Hamaidi · 如何使预处理器宏在编译之前对代码求值 2 年前 |
Lightsout · 用于填充表的sql连接压缩行 2 年前 |
Rogue258 · 在DB2SQL中使用存储过程/宏进行声明和循环 2 年前 |
allthem · 将VBA设置为仅在第一次打开电子表格时自动运行 2 年前 |
user306080 · 下面的宏在做什么? 2 年前 |
Xev · 运行时错误91:对象变量或未设置块 2 年前 |
digital illusion · 请参阅宏扩展中的外部板条箱 2 年前 |
Aleph · 标识符在C预处理器指令中的作用是什么 2 年前 |
Gakuo · 使用lisp循环宏进行高级循环 6 年前 |