我想知道是否有办法将整个函数调用绑定到 Oz 中的变量中。例如,我确实有:
fun {F1 A1 A2}
A1+A2
end
和一个局部变量X
。
我想要做的是将调用(按原样)存储{F1 1 2}
在X
而不是其结果中:3
,以便我可以{F1 1 2}
通过某种方式再次调用X
.
这在奥兹可能吗?如果是这样,怎么做?
谢谢您的回答。
我想知道是否有办法将整个函数调用绑定到 Oz 中的变量中。例如,我确实有:
fun {F1 A1 A2}
A1+A2
end
和一个局部变量X
。
我想要做的是将调用(按原样)存储{F1 1 2}
在X
而不是其结果中:3
,以便我可以{F1 1 2}
通过某种方式再次调用X
.
这在奥兹可能吗?如果是这样,怎么做?
谢谢您的回答。
最简单的方法是动态创建一个不带参数的函数,例如
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 )将其推广到任意数量的参数。如果您想这样做并需要帮助,请告诉我。