我在ML
中编写功能时遇到了问题local
fun add(g:int->int,f:int->int,m:int,x:int,sum:int):int=
if m>x then sum
else add(g,g o f,m+1,x,sum+(g f x))
in
fun sum f g x=
if x=0 then f x
else add(g,g o f,1,x,f x)
end;
现在,我试图做的基本上是f(x)+ g(f(x))+ g(g(f(x)))+ ... + g ^ x(f( X)) 但我无法做到。我不断收到操作数和操作员不同意的错误。有人可以指出我做错了什么,也许我该如何解决?
fun sum f g x
是函数的给定签名,因此我无法对其进行更改。
答案 0 :(得分:0)
我认为错误不在g o f
,而在g f x
。这不是类型检查,因为g
不是两个参数的函数。你的意思是g(f x)
吗?