考虑
core.typed
注释函数的方式:(t/ann typed-function [t/Str :-> t/Str])
现在考虑 Prismatic Schema 注释函数的方式:
(s/defn schema-function :- s/Str [arg :- s/Str] arg)
就个人而言,我发现core.typed
注释函数的方式在精神上更清晰,更接近于 Haskell 等强类型语言。
问题:有没有办法使用 Prismatic Schema 在 clojure 中制作某种宏或函数,具有 (2) 的效果但视觉外观 (1)?也就是说,类似于以下内容:'
(custom-annotation-macro schema-function [s/Str :-> s/Str])
(defn schema-function [arg] arg)
这样的效果仅仅是
(s/defn schema-function :- s/Str
[arg :- s/Str]
arg)