2024 Clojure 状态调查中分享您的想法!

欢迎!请在 关于 页面上找到更多关于如何使用本网站的信息。

+1
语法和读取器
无操作宏是行注释(从 {{#!}} 或 {{;}} 开始),{{#_}},无匹配功能的读取器条件(可以剪接也可以不剪接)。
此外,一旦读取了无操作宏,就允许重新使用常规空白。

示例
命名空间映射 {{#foo{:bar :baz}}}

#:#_()#! bang bang
#?(:whatever 42); 现在是空白行

#?@(:default ())foo
{:bar :baz}


标签字面量 {{#inst "2017-04-24T09:11:29.878-00:00"}}

##_()#! bang bang
#?(:whatever 42); 现在是空白行

inst "2017-04-24T09:11:29.878-00:00"


匿名参数: {{#(do %1)}}

#(do %#_()#! bang bang
#?(:whatever 42); 现在是空白行

#?@(:default ())1)


此外,匿名参数实现存在漏洞(任何 {{%n}} 都被接受,只要 {{n}} 在 (-2.0 -1.0] (映射为 {{%&}})和 [1.0 无限大) 范围内,并且可以使用任何表示形式(bigdec 或 bigint 或 float 或任何基数的整数)。


#(list %#_(first arg)1.00000001 %#_(second arg)2r10 %#_(rest arg)-1.5)

3 个答案

0

评论者:cgrand

该补丁将主体从读取循环中提取出来,以公开一个返回形式或读取器(如果从当前位置开始没有读取到有值的表)的 readSome 方法。
该补丁还添加了一个正则表达式模式来验证匿名参数。

0

评论者:cgrand

clj2160-2 是 clj2160 + 两个冗余检查,而这些检查未被删除。

0
参考: https://clojure.atlassian.net/browse/CLJ-2160(由cgrand报告)
...