gpt4 book ai didi

Clojure - 当 `comp` 从右到左时,这是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 01:32:01 25 4
gpt4 key购买 nike

comp 的文档声明它从最右边的函数开始,将参数应用于它,然后将结果提供给下一个函数,依此类推。因此,这里先添加数字,然后将 str 应用于整数 16:

((comp str +) 8 8) ;;=> "16"

此代码来自 core.async webinar 中的示例 7 :

mouse (events->chan js/window EventType.MOUSEMOVE
(chan 1
(comp (map mouse-loc->vec)
(filter (fn [[_ y]] (zero? (mod y 5)))))))

此处鼠标事件流是参数。它们首先被转换成一对(元组 2 向量),然后过滤这些对。 map 函数(碰巧是一个转换器)需要在 filter 函数之前接收鼠标事件,显然这就是实际发生的情况,因为这段代码有效。那么,为什么第一个操作(map 函数)不是 comp 最右边的函数参数?

回答video在 25:30 Rich Hickey 说“换能器毁了 comp 或类似的东西”——之后他解释了这个问题。谢谢@nblumoe

最佳答案

下面是传感器文档中的一个片段,解释了这种行为:

Composition of the transformer runs right-to-left but builds a transformation stack that is applied left-to-right

http://clojure.org/transducers (参见“使用转换器定义转换”)

关于Clojure - 当 `comp` 从右到左时,这是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33602535/

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