【发布时间】:2011-02-12 19:38:51
【问题描述】:
谁能给我解释一下为什么下面给出的函数类型是('a * 'b -> 'b) -> 'b -> 'a list -> 'b?
函数是:
fun foldr f b [] = b
| foldr f b (x::xs) = f (x, (foldr f b xs))
当我查看这个函数时,我发现类型应该只是 ('a * 'b -> 'b) -> 'b,因为我们有一个函数 f,它接收一个元组并返回 'b,在基本情况下,我们返回'b.
【问题讨论】: