当前位置:  开发笔记 > 前端 > 正文

Clojure有"展开"吗?

如何解决《Clojure有"展开"吗?》经验,为你挑选了1个好方法。

不,unfold在Clojure中未实现。它由amalloys flatland.useful库提供,根据CrossClj的介绍,它具有广泛的用途。看到您链接的博客文章提供了对该主题的相当深入的探索,我怀疑您的问题比直接回答还不能满足您的需求...您是否想到了一些iterate不足之处?还是对名称或行为iterate不完全感到失望unfold

(defn fib-step [[a b]] [b (+ a b)])
(take 10 (map first (iterate fib-step [0 1])))

(take-while (complement neg?) (iterate dec 5))

我更喜欢使用iterate这些示例,因为iterate它已经是核心。我可以看到人们更喜欢unfold他们是否更熟悉。

有许多库提供“本应存在于内核中的内容”,例如https://weavejester.github.io/medley/medley.core.html。在https://crossclj.info/上进行的快速搜索显示https://github.com/amalloy/useful包含flatland.useful.seq / unfold,尽管我没有使用过,但它似乎是Clojure核心贡献者的出色实现并附带其他一些不错的东西来启动。



1> Timothy Prat..:

不,unfold在Clojure中未实现。它由amalloys flatland.useful库提供,根据CrossClj的介绍,它具有广泛的用途。看到您链接的博客文章提供了对该主题的相当深入的探索,我怀疑您的问题比直接回答还不能满足您的需求...您是否想到了一些iterate不足之处?还是对名称或行为iterate不完全感到失望unfold

(defn fib-step [[a b]] [b (+ a b)])
(take 10 (map first (iterate fib-step [0 1])))

(take-while (complement neg?) (iterate dec 5))

我更喜欢使用iterate这些示例,因为iterate它已经是核心。我可以看到人们更喜欢unfold他们是否更熟悉。

有许多库提供“本应存在于内核中的内容”,例如https://weavejester.github.io/medley/medley.core.html。在https://crossclj.info/上进行的快速搜索显示https://github.com/amalloy/useful包含flatland.useful.seq / unfold,尽管我没有使用过,但它似乎是Clojure核心贡献者的出色实现并附带其他一些不错的东西来启动。

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有