我认为让 Spec 以与宏相同的方式将字面代码传入函数是有价值的。也许 fdef
可以接受一个 :syntax
规范,这将用于此。
我认为有许多函数可以用这种方式很有用。很多函数会接受关键字作为选项,这些很可能以字面量形式提供,所以在读取时为函数调用对它们的使用进行合规性检查是有价值的。
其他有用的情况可能包括即使是简单的使用,比如 +
操作,其中参数常常包含字面量数字,在这种情况下,规范可以在读取时验证没有将关键字或字符串字面量作为语法错误传递给它。
实际上,我发现许多 Clojure 函数本身都有特定的函数语法,如果能像宏一样在读取时使用 Spec 对其语法进行合规性检查那就太棒了。