【发布时间】:2014-03-12 03:35:31
【问题描述】:
我正在创建一种基于 Racket 的新语言,我不希望某些 #x 宏起作用,例如语法引用 #'。如何删除它,以便 #' 不执行语法引用,而是执行未绑定调度宏字符的任何操作?
我可以用单字符宏来做到这一点
(make-readtable (current-readtable)
#\' #\a #f) ; set ' to be the same as a normal character
但我不知道如何为调度宏执行此操作。
【问题讨论】:
-
不确定究竟你想要的结果。您是否希望
#'被视为'- 例如#'x变成'x和#'(x)变成'(x)?还是您希望完全丢弃#'?还是别的什么? -
这与 Scheme 的关系和与 CommonLisp 的关系一样多。建议删除“方案”标签。
-
@GregHendershott 就像我说的,“我如何删除它,以便
#'不执行语法引用,但执行 unbound 调度宏字符的任何操作?”即我#'应该做#@和##做的事情(假设用户没有编程他们做某事),这是一个错误。 -
##所做的是给出一个错误:"read: bad syntax `##'"。这就是你想让#'做的事情吗? -
@GregHendershott 是的,完全正确。我想为我的语言删除它的功能,就像我在我的示例中为引号字符所做的那样。
标签: macros racket reader-macro