gpt4 book ai didi

Clojure 公案 : Trouble Understanding the Section on Sequence Comprehensions

转载 作者:行者123 更新时间:2023-12-02 18:21:47 27 4
gpt4 key购买 nike

我是 Clojure 新手,所以我一直在浏览 Clojure Koans最后几天。事情进展得相当顺利,直到 section on sequence comprehensions 。我在这部分遇到困难。 answers可用,但我不明白他们如何得出这些答案。过去两天我读了很多有关 Clojure 的内容,但它与 Ruby 有很大不同,我花了一段时间才理解它。

该部分有五个“问题”,但我无法解决。以下是两个让我特别困惑的问题示例:

"And also filtering"
(= '(1 3 5 7 9)
(filter odd? (range 10))
(for [index __ :when (odd? index)]
index))

"And they trivially allow combinations of the two transformations"
(= '(1 9 25 49 81)
(map (fn [index] (* index index))
(filter odd? (range 10)))
(for [index (range 10) :when __]
__))

对于有 Clojure 经验的人,您能否解释一下他们是如何得出本节的解决方案的?无论我读了多少有关序列的内容,我都无法理解这一部分。谢谢!

最佳答案

我假设您理解mapfilter函数,我想它们也存在于 Ruby 中。让我给你举个例子,也许可以帮助你理解for在这种情况下使用。

(map <some function to map a value> 
(filter <some function to return true OR false to filter values>
<a sequence of values>))

上面的代码使用 filter 对一系列值进行一些过滤然后使用 map 将过滤后的序列的每个值映射到其他值功能。

for基本上允许你做同样的事情,如下所示

(for [index <a sequence of values> 
:when <some expression to return true OR false by check index value>]
(<some expression to map a value i.e transform index to something else>))

我希望上面的例子能够让您能够映射mapfilter代码可以用 for 来表示

关于Clojure 公案 : Trouble Understanding the Section on Sequence Comprehensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com