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

欢迎!请参阅关于页面以了解更多关于如何使用本网站的信息。

0
Spec

有时候检查局部数据的形状(比如经过一系列转换后)会非常有帮助。

可能吗?

那么,对于thread-first.thread-last(例如)的某些步骤进行spec是否可能?

作为一个随机的想法,类似于这样?

(->> xs
     ^:xs (map ...) ;; <- attaching spec for output via tag
      (filter ...)
      (remove ...)

2 答案

0

已选择
 
最佳答案

不,按您描述的方式现在还不行。不过,可以通过一个函数实现,这个函数接受一个spec和一个值,检查值是否符合spec,然后抛出异常或返回,然后将它放入->>链中作为另一个线程函数。

也许可以通过新的宏以类似的方式使用元数据来达成类似的目的。

0

并非答案,而是一则比较无创意的评论...我喜欢线程宏的代数性质。我将形式在线程宏中放入和取出,以决定如何使它们的意图和效果最清晰。将任何其他行为附加到线程宏上会引入复杂性。因为我可以在任何地方、任何时候将事物符合规范,但实际上我通常不会,除非我故意进行故障排除,所以我更愿意在线程形式中插入一个步骤来完成它,这样如果我不展开(扩展)宏,行为会保持相同。

更多的是描述数据的形状,而不是使其符合。
...