任何人都可以向我解释如何确定以下函数的类型,折叠,如下定义?
fun fold func [] base = base
| fold func (x::xs) base = fold func xs (func x base);
我的答案是'c->'a list->'b->'b,但我看到在将代码插入我的SML程序后,类型实际上应该是('a->'b->'b) ->'a 列表->'b->'b.
我了解 'a list->'b->'b 的来源,但第一部分让我感到困惑。是不是因为 func 接受两个参数,一个 'a 和一个 'b,并返回 base 的类型,即 'b?
任何帮助将不胜感激。