如何在不牺牲性能的情况下将函数作为参数传递给Julia中的其他函数?

菲利普

编辑以尝试解决@ user2864740的编辑和评论:我想知道是否有任何与0.4rc1 / rc2特别相关的信息,或者特别是来自Julia开发商之一的策略或建议,而不是下文中引用的那些(尤其是@StefanKarpinski的Jan) 2014年,答案在下面的#6中)。谢谢

请看例如

  1. https://groups.google.com/forum/#!topic/julia-users/pCuDx6jNJzU
  2. https://groups.google.com/forum/#!topic/julia-users/2kLNdQTGZcA
  3. https://groups.google.com/forum/#!msg/julia-dev/JEiH96ofclY/_amm9Cah6YAJ
  4. https://github.com/JuliaLang/julia/pull/10269
  5. https://github.com/JuliaLang/julia/issues/1090
  6. 我可以在类型为Julia的函数的参数中添加类型信息吗?
  7. 在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函数作为参数调用该函数之前为每个输入函数添加注释,那么您将尽一切可能而不必调整为您要传递的具体参数的具体情况。”

如果是这样,那太好了–我只是想知道这是否是正确的解释,或者,是否有我可以阅读的关于此主题的资源,比此处的链接集合更接近“逻辑上”呈现的综合信息(这更多是关于这个问题的集体意识或思想史)。

智者

答案仍然是“使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不展开包装的情况下将ref传递给方法/函数参数?

如何在不访问Java母函数的情况下将参数传递给回调

如何在不创建新函数的情况下将参数传递给React + Typescript中的回调?

如何在不调用函数的情况下将参数传递给函数?

如何在不更改上下文的情况下将参数数组传递给函数?

如何在不丢失“ event”属性的情况下将参数传递给事件侦听器的回调函数?

如何在没有ngClick的情况下将值作为参数传递给Angular2中的onclick内部的函数调用?

装饰器如何在不更改其签名的情况下将变量传递给函数?

如何在不进行for循环的情况下将任意数量的参数传递给R函数?

如何在不带参数的情况下将大数据集传递给函数

如何在其他函数中不返回 NULL 的情况下使用 getActivity()?

JS-如何在不调用函数的情况下将函数作为参数传递(带有参数)

Kotlin:如何将具有可变参数的函数作为参数传递给其他函数

如何在不使用C ++创建函数对象的情况下将函数指针作为模板值参数传递?

如何在期望两个参数的情况下仅将一个参数传递给函数?

将字符串作为函数中的参数传递给 R 中的其他函数

如何在不创建箭头函数的情况下在 React 中传递带有参数的函数作为 prop

如何将函数作为参数传递给其他函数?我的代码如下

如何将函数作为参数传递给其他函数以避免重复代码

如何将参数从函数传递给其他函数

R如何在不返回变量的情况下将变量从一个对象传递给函数?

C ++:如何在不执行功能的情况下将参数作为参数传递?

如何在没有'lambda'关键字的情况下将方法作为函数参数传递?

如何在不覆盖父范围的情况下将参数传递给指令?

有没有一种方法可以在不运行整个类的情况下将类作为参数传递给函数?

如何将 state 和 setState 作为参数传递给其他函数?

如何将Django过滤器args作为参数传递给其他函数

spring如何在不传递参数的情况下实例化@Autowired构造函数

如何在React中不使用props的情况下将函数传递给组件的层次结构?