问题标签 [reader-macro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
965 浏览

macros - 在 Lisp 阅读器宏中将输入读入字符串

我正在尝试制作一个可以将@this 转换为“this”的阅读器宏。这是我目前拥有的:

问题是这需要我在@this 之后添加一个换行符。我也用 (read) 尝试过,但这只是返回变量 test,它尚未设置。我不能硬编码@符号后的字符数,因为我不知道会有多少。有没有什么办法解决这一问题?

编辑:是循环读取字符和窥视字符的唯一方法,直到我到达#)、#\space 或#\Newline?

0 投票
2 回答
362 浏览

stream - 更改 common lisp 中的默认阅读器

我写了一些可以代替read普通lisp功能的函数

有没有办法将此功能用作默认阅读器?

0 投票
2 回答
975 浏览

clojure - 为什么 Clojure 缺少用户定义的阅读器宏?

据我了解,Clojure 不会公开阅读器宏表或允许用户定义阅读器宏。

来自http://clojure.org/reader

我只是想知道是否有明确或明确的声明(可能来自 Rich Hickey)说明将它们排除在 Clojure 之外的理由。

注意我不是在问 Clojure 缺少用户定义的阅读器宏是好事还是坏事。只是想知道为什么。

0 投票
1 回答
467 浏览

lisp - Common Lisp 中的反引号:read 和 eval

对于 Elisp ,这个问题在某种程度上与this和this 相关。基本上,如何阅读和评估反引号?正在发生什么过程?标准对此有什么说明吗?

这是我所期望的,但它不会发生:符号`是一个阅读器宏,被翻译成某种(BACKQUOTE ...)宏/特殊形式(类似于'被翻译成(QUOTE ...))。这不会发生,事实上,Common Lisp 甚至没有BACKQUOTE宏。

发生了什么(SBCL):

与预期不同的东西,但还可以。现在,,C它本身就是一个有趣的野兽:

如果没有逗号符号,评估读取表达式就可以了:

但是,如果我想评估原始表达式,即使使用本地绑定 for C,也会出现问题:

这意味着EVAL没有拾取C绑定的环境。

PS。有趣的是,在 Elisp 中这是可行的。

0 投票
2 回答
182 浏览

common-lisp - cl-mysql代码中的“#+”是什么意思?

最近我尝试阅读有关cl-mysql 的代码,但被#+.

试着google了一下,没用,所以转到这里

看起来它适用于不同的后端 lisp 编译器。但仍然不知道为什么要写这样的东西。任何人都可以帮我说清楚,谢谢。

0 投票
1 回答
78 浏览

common-lisp - 我可以在他们的扩展站点中获得宏的边界吗?

我想知道宏扩展发生的文件位置和字符位置,以便在 GUI 中突出显示宏扩展。

为此,我希望能够引用宏的当前位置,从宏本身进行扩展。

例如,如果我有以下代码:

我希望能够将其扩展为类似

如果存在这样的函数,一个最小的示例宏可能类似于

我也将它标记为 reader-macro,因为我真的不知道这应该发生在哪里。

0 投票
2 回答
2732 浏览

lisp - #+: 和 #-: 在普通 lisp 中是什么意思

我今晚正在阅读cl-fad/load.lisp代码,我发现在表达式或字符串的前面有符号#+:#-:

这些符号是什么意思?

0 投票
3 回答
147 浏览

clojure - 在“丢弃”阅读器宏之后带有“其余参数”宏的 Clojure 函数文字

我想要一个 Clojure 中的函数文字,它可以接受任意数量的参数,但实际上并不使用它们。所以我发现了%&('rest arg' for function literal)和#_('discard' reader macro)。

但他们如何协同工作让我感到惊讶:

这看起来像我想要的(并且最终似乎可以工作),但是丢弃宏应该如何工作?医生

#_ 后面的形式被读者完全跳过。

但显然这里被忽略的%&形式有一个副作用,那就是它会影响函数文字 args 列表。我应该依赖这种行为还是它看起来更像一个错误?

0 投票
1 回答
415 浏览

common-lisp - Common Lisp Hash-Dot #. 阅读器宏

最近,我遇到了所谓的散列点 Common Lisp 阅读器宏,我想知道它是如何工作的以及它的作用。使用搜索引擎并没有太大帮助,因此欢迎提供任何示例、解释,尤其是用例。

0 投票
1 回答
366 浏览

syntax - Common Lisp 未定义调度字符

我目前正在阅读 Paul Graham 的“On Lisp”一书中关于读取时间宏的章节。

我遇到的问题如下。当我运行他的一个示例时:

我收到以下错误:

为什么会这样?可能是因为我在 REPL 上运行它吗?可以做些什么来解决它?