问题标签 [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.
macros - 在 Lisp 阅读器宏中将输入读入字符串
我正在尝试制作一个可以将@this 转换为“this”的阅读器宏。这是我目前拥有的:
问题是这需要我在@this 之后添加一个换行符。我也用 (read) 尝试过,但这只是返回变量 test,它尚未设置。我不能硬编码@符号后的字符数,因为我不知道会有多少。有没有什么办法解决这一问题?
编辑:是循环读取字符和窥视字符的唯一方法,直到我到达#)、#\space 或#\Newline?
stream - 更改 common lisp 中的默认阅读器
我写了一些可以代替read
普通lisp功能的函数
有没有办法将此功能用作默认阅读器?
clojure - 为什么 Clojure 缺少用户定义的阅读器宏?
据我了解,Clojure 不会公开阅读器宏表或允许用户定义阅读器宏。
我只是想知道是否有明确或明确的声明(可能来自 Rich Hickey)说明将它们排除在 Clojure 之外的理由。
注意我不是在问 Clojure 缺少用户定义的阅读器宏是好事还是坏事。只是想知道为什么。
lisp - Common Lisp 中的反引号:read 和 eval
对于 Elisp ,这个问题在某种程度上与this和this 相关。基本上,如何阅读和评估反引号?正在发生什么过程?标准对此有什么说明吗?
这是我所期望的,但它不会发生:符号`是一个阅读器宏,被翻译成某种(BACKQUOTE ...)
宏/特殊形式(类似于'
被翻译成(QUOTE ...)
)。这不会发生,事实上,Common Lisp 甚至没有BACKQUOTE
宏。
发生了什么(SBCL):
与预期不同的东西,但还可以。现在,,C
它本身就是一个有趣的野兽:
如果没有逗号符号,评估读取表达式就可以了:
但是,如果我想评估原始表达式,即使使用本地绑定 for C
,也会出现问题:
这意味着EVAL
没有拾取C
绑定的环境。
PS。有趣的是,在 Elisp 中这是可行的。
common-lisp - cl-mysql代码中的“#+”是什么意思?
最近我尝试阅读有关cl-mysql 的代码,但被#+
.
试着google了一下,没用,所以转到这里
看起来它适用于不同的后端 lisp 编译器。但仍然不知道为什么要写这样的东西。任何人都可以帮我说清楚,谢谢。
common-lisp - 我可以在他们的扩展站点中获得宏的边界吗?
我想知道宏扩展发生的文件位置和字符位置,以便在 GUI 中突出显示宏扩展。
为此,我希望能够引用宏的当前位置,从宏本身进行扩展。
例如,如果我有以下代码:
我希望能够将其扩展为类似
如果存在这样的函数,一个最小的示例宏可能类似于
我也将它标记为 reader-macro,因为我真的不知道这应该发生在哪里。
lisp - #+: 和 #-: 在普通 lisp 中是什么意思
我今晚正在阅读cl-fad/load.lisp代码,我发现在表达式或字符串的前面有符号#+:
和#-:
。
这些符号是什么意思?
clojure - 在“丢弃”阅读器宏之后带有“其余参数”宏的 Clojure 函数文字
我想要一个 Clojure 中的函数文字,它可以接受任意数量的参数,但实际上并不使用它们。所以我发现了%&
('rest arg' for function literal)和#_
('discard' reader macro)。
但他们如何协同工作让我感到惊讶:
这看起来像我想要的(并且最终似乎可以工作),但是丢弃宏应该如何工作?医生说:
#_ 后面的形式被读者完全跳过。
但显然这里被忽略的%&
形式有一个副作用,那就是它会影响函数文字 args 列表。我应该依赖这种行为还是它看起来更像一个错误?
common-lisp - Common Lisp Hash-Dot #. 阅读器宏
最近,我遇到了所谓的散列点 Common Lisp 阅读器宏,我想知道它是如何工作的以及它的作用。使用搜索引擎并没有太大帮助,因此欢迎提供任何示例、解释,尤其是用例。
syntax - Common Lisp 未定义调度字符
我目前正在阅读 Paul Graham 的“On Lisp”一书中关于读取时间宏的章节。
我遇到的问题如下。当我运行他的一个示例时:
我收到以下错误:
为什么会这样?可能是因为我在 REPL 上运行它吗?可以做些什么来解决它?