【发布时间】:2015-12-19 23:45:52
【问题描述】:
EDIT 尝试解决 @user2864740 的编辑和评论:我想知道是否有任何与 0.4rc1/rc2 特别相关的信息,或者特别是来自 Julia 开发人员之一的策略或建议最近比下面引用的那些(特别是@StefanKarpinski 在下面#6 中的 2014 年 1 月回答)。谢谢
请参见例如
- https://groups.google.com/forum/#!topic/julia-users/pCuDx6jNJzU
- https://groups.google.com/forum/#!topic/julia-users/2kLNdQTGZcA
- https://groups.google.com/forum/#!msg/julia-dev/JEiH96ofclY/_amm9Cah6YAJ
- https://github.com/JuliaLang/julia/pull/10269
- https://github.com/JuliaLang/julia/issues/1090
- Can I add type information to arguments that are functions in Julia?
- Performance penalty using anonymous function in Julia
(作为一个相当缺乏经验的 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 注释每个输入函数,那么你会做得很好你可以不调整你传递的具体参数的具体情况。”
如果这是真的,那太好了——我只是想知道这是否是正确的解释,或者如果不是,我是否可以阅读关于这个主题的一些资源,它更接近于“逻辑”呈现的综合而不是集合链接在这里(更多的是集体意识流或关于这个问题的思想史)。
【问题讨论】:
-
标题是特定时间的。如果有更新的更改(可能在之前的一些问题/答案中遗漏了)并且此类改进与此问题相关,请确保它们与正文相得益彰。
-
另一个链接给你here,虽然你不需要另一个链接:-)
标签: performance function functional-programming julia anonymous-function