2

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

fun {F1 A1 A2} 
    A1+A2 
end

和一个局部变量X

我想要做的是将调用(按原样)存储{F1 1 2}X而不是其结果中:3,以便我可以{F1 1 2}通过某种方式再次调用X.

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

谢谢您的回答。

4

1 回答 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 )将其推广到任意数量的参数。如果您想这样做并需要帮助,请告诉我。

于 2012-04-19T17:48:56.617 回答