gpt4 book ai didi

functional-programming - 函数式编程 : Are maps sequential? 对闭包的影响

转载 作者:行者123 更新时间:2023-12-05 00:18:12 26 4
gpt4 key购买 nike

我将用 Julia 来说明:

假设我有一个函数 counter() 是一个闭包。

function mycl()                                                                                                                                                                                                    
state=0
function counter()
state=state+1
end
end

现在假设我创建了函数 mycoutner:
mycounter=mycl()

现在将此函数映射到长度为 10 的数组上,所有元素均为 1。
map(x->x+mycounter(),ones(1:10))

输出如下:
julia> map(x->x+mycounter(),ones(1:10))
10-element Array{Int64,1}:
2
3
4
5
6
7
8
9
10
11

看来该函数是按顺序应用于要映射的数组的。

最终我试图避免 for 循环,但是对于闭包变异状态的局部状态变量,我需要按顺序应用它。好像是这样,这是采用的标准吗? (尚未使用 *apply 测试等效的 R 版本)。这真的是“功能性的”,因为局部状态变量正在发生变化?

最佳答案

map 的当前 Julia 实现确实按顺序将其函数参数应用于其集合参数,尽管这不是明确记录的功能。将来,当多线程成为非实验性语言功能时,评估顺序可能会发生变化,但这不会在没有警告的情况下发生。也有可能不是通过改变 map 的行为而发生的。 ,但可以作为选择加入功能 - 例如通过 tmap对于“线程映射”——或者作为一种优化,在编译器知道被映射的函数是纯函数的情况下。

关于functional-programming - 函数式编程 : Are maps sequential? 对闭包的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515247/

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