我正在尝试编写一个函数,它本质上会返回一个函数。我正在努力实现这样的目标:
{{Add 3}4}
结果将显示为7.我发现以下SO question有相同的问题,但答案对我不起作用。我收到“不引入可变加法器”。我尝试在本地声明它,并设置一个等于它的变量,但到目前为止,我还没有任何工作。我知道我想做什么;我想返回一个由外部函数修饰的函数。不幸的是,我在文档中找不到任何关于如何做到这一点的可靠内容。这是我一直在尝试的,基于在线文档。
declare
local
proc {And M ?B}
if M > 0 then B = M else B = 0 end
end
in
proc {Add2 J ?B}
J + {And}
end
end
当我打电话
{{Browse {Add2 1}2}
我希望得到3.我实际得到的是一个没有错误的编译,实际上并没有浏览任何东西。 我知道这不是我想要的,但这是我到目前为止所做的一切。我想拿J,然后把它添加到调用那里剩下的东西的结果中。有人能指出方向吗?
谢谢,
答案 0 :(得分:1)
使用功能:
functor
import
Application
System
define
fun {Add X}
fun {$ N} X+N end
end
{System.showInfo {{Add 10} 20}}
{Application.exit 0}
end
使用程序:
functor
import
Application
System
define
proc {Add X P}
P = proc {$ N R} R = N+X end
end
{System.showInfo {{Add 10} 20}}
{Application.exit 0}
end
答案 1 :(得分:0)
如果您不想在Ankur的答案中使用仿函数语法,您还可以编写类似
的内容local
fun {Add A}
fun {$ B} A+B end
end
in
{Browse {{Add 3} 4}}
end