编辑以尝试解决@ user2864740的编辑和评论:我想知道是否有任何与0.4rc1 / rc2特别相关的信息,或者特别是来自Julia开发商之一的策略或建议,而不是下文中引用的那些(尤其是@StefanKarpinski的Jan) 2014年,答案在下面的#6中)。谢谢
请看例如
(作为一个没有经验的Julia用户),我对此信息的最佳综合(其中有些似乎已经过时)是最佳实践是“避免这样做”或“使用FastAnonymous.jl”。
我想知道最新和最有效的解决方法是什么。
[长版:]
特别是,假设我的功能层次很大。我希望能够做类似的事情
function transform(function_one::Function{from A to B},
function_two::Function{from B to C},
function_three::Function{from A to D})
function::Function{from Set{A} to Dict{C,D}}(set_of_As::Set{A})
Dict{C,D}([function_two(function_one(a)) => function_three(a)
for a in set_of_As])
end
end
请不要从字面上看代码。这是更通用的转换形式的狭窄示例,无论转换的具体细节如何,我都希望能够执行,但我希望以不必担心的方式进行转换每次编写这种行为的函数时(过多)关于检查性能的问题(也就是说,超出了我在任何非函数式参数化情况下都会遇到的普通担忧)。
例如,在我理想的世界中,正确的答案是“只要在使用每个@anon
函数作为参数调用该函数之前为每个输入函数添加注释,那么您将尽一切可能而不必调整为您要传递的具体参数的具体情况。”
如果是这样,那太好了–我只是想知道这是否是正确的解释,或者,是否有我可以阅读的关于此主题的资源,比此处的链接集合更接近“逻辑上”呈现的综合信息(这更多是关于这个问题的集体意识或思想史)。
答案仍然是“使用FastAnonymous.jl”,或手动创建“ functor类型”(请参阅NumericFuns.jl)。
如果您使用的是julia 0.4,则FastAnonymous.jl的工作方式与官方“快速关闭”最终将在基本julia中工作的方式相同。见https://github.com/JuliaLang/julia/issues/11452#issuecomment-125854499。(FastAnonymous在julia 0.3上以非常不同的方式实现,并且还有很多弱点。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句