LISP - 宏


宏允许您扩展标准 LISP 的语法。

从技术上讲,宏是一个函数,它接受 s 表达式作为参数并返回 LISP 形式,然后对其进行求值。

定义宏

在 LISP 中,命名宏是使用另一个名为defmacro 的宏来定义的。定义宏的语法是 -

(defmacro macro-name (parameter-list))
"Optional documentation string."
body-form

宏定义由宏名称、参数列表、可选文档字符串以及定义宏要执行的作业的 Lisp 表达式体组成。

例子

让我们编写一个名为 setTo10 的简单宏,它将接受一个数字并将其值设置为 10。

创建名为 main.lisp 的新源代码文件并在其中键入以下代码。

(defmacro setTo10(num)
(setq num 10)(print num))
(setq x 25)
(print x)
(setTo10 x)

当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,返回的结果是 -

25
10