functional-programming - 有没有办法在 Oz 中存储函数/过程调用?

标签 functional-programming higher-order-functions oz mozart

我想知道是否有办法在 Oz 中将整个函数调用绑定(bind)到变量中。 例如,我确实有:

fun {F1 A1 A2} 
    A1+A2 
end

和一个局部变量X

我想要做的是将调用(按原样){F1 1 2} 存储在X 中,而不是其结果:3,这样 我可能会通过引用 X 再次调用 {F1 1 2}

这在奥兹国可能吗?如果是这样,怎么办?

感谢您的回答。

最佳答案

最简单的方法是动态创建一个不带参数的函数,例如

fun {CreateCall F A1 A2}
   fun {$}
      {F A1 A2}
   end
end

fun {F A1 A2}
   A1 + A2
end

C = {CreateCall F 1 2}

{Show {C}}

函数CreateCall创建并返回一个匿名空函数,该函数使用给定的参数调用F。 (这种技术类似于 Haskell 等语言中的部分函数应用。)

可以使用库函数 Procedure.apply ( doc ) 将其推广到任意数量的参数。如果您想这样做并需要帮助,请告诉我。

关于functional-programming - 有没有办法在 Oz 中存储函数/过程调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231797/

相关文章:

Scala - 找到所需的单元 : play. api.mvc.SimpleResult

haskell - 如何摆脱这种歧义?

c++ - Haskell 中的面向对象编程

arrays - 哪种方法更好,每次保存一个值或评估?

list - 如何用惯用的方式编写这个函数?

haskell - Haskell 是否支持未绑定(bind)变量?

functional-programming - Elm 中是否有等效的 JavaScript reload()

c - C 中的高阶函数

oz - 如何在 Oz 中创建列表?

scala - 动态类型和编程分布式系统