我想知道是否有办法在Oz中的变量中绑定整个函数调用。 例如,我有:
fun {F1 A1 A2}
A1+A2
end
和局部变量X
。
我想要做的是,将调用(原样){F1 1 2}
存储在X
中,而不是结果:3
,以便
我可以通过某种方式再次呼叫{F1 1 2}
。{/ 1}。
这可能在奥兹吗?如果是这样,怎么样?
感谢您的回答。
答案 0 :(得分: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
创建并返回一个匿名的nullary函数,该函数使用给定的参数调用F. (这种技术类似于Haskell等语言中的部分功能应用。)
可以使用库函数Procedure.apply
(doc)将此概括为任意数量的参数。如果你想这样做并需要帮助,请告诉我。