1
我在计算如何将函数加括号(当在某些部分的周围添加括号以使意思更清晰时是合法的)时遇到了一些困难。SML:严格的加括号功能类型的方法
例如,foldl
被定义为具有类型:现在
foldl : ('a * 'b -> 'b) -> b -> 'a list -> 'b
,如果我看foldl
的定义,我看到:在此基础上
fun foldl g z [] = z
| foldl g z (x::L) = foldl g (g(x,z)) L;
,我通常只是精神上地图g
至('a * 'b -> 'b)
,z
为'b
类型,并且模式匹配处理类型'a list
的列表。最后,返回类型为'b
。
不过,我想->
正确的同伙,所以说“OK,加括号像这样开始不会是最自然的:
foldl : ('a * 'b -> 'b) -> 'b -> ('a list -> 'b)
有什么不对这一思路/我是什么误解有关如何添加括号?