【发布时间】:2021-05-09 18:22:32
【问题描述】:
我正在上一门编程语言原理课,教授谈论使用 Lisp 的宏(Precisly,Elisp)。但是,他没有教我们如何写这种语言。因此,我正在努力学习自己。
但是,关于在 Lisp 中使用“tick”('),我有些不明白。但是,我确实了解基本用途。例如,如果我们有(cdr '(a b c)),它将给我们一个列表(b c)。如果没有勾选符号,(a b c) 将被评估为一个函数。
在我教授写的代码中,我注意到“勾号”符号的奇怪用法,我无法真正理解它的用法:
; not sure why there is a "'" in front of if and it is being added to a list ??
(defmacro myand(x y) (list 'if x y nil))
; Another example. Tick symbol before "greater than" symbol ? and made into a list?
(list 'if (list '> x y))
列表和刻度符号的使用对我来说真的没有意义。谁能解释这里发生了什么?我想这对 Lisp 来说很特别
【问题讨论】:
-
Emacs Lisp 有一个介绍:gnu.org/software/emacs/manual/html_node/eintr/index.html - 它可能有用。它也有一个参考。这是关于宏的章节:gnu.org/software/emacs/manual/html_node/elisp/Macros.html
-
与您的其他问题交叉引用stackoverflow.com/q/67461656
标签: macros lisp elisp elisp-macro