为什么以下函数的类型为t - >(t - > t1) - > t1

Sna*_*ppy -2 haskell functional-programming

rev a b = b a
Run Code Online (Sandbox Code Playgroud)

我只是不明白,为什么这个功能有t -> (t -> t1) -> t1类型?

Gur*_*las 5

b a是函数b对参数的应用a.这就是所有编译器都可以推断出什么ab是什么,所以它分配名称tt1该函数的参数类型以及该函数的返回类型,并说它rev接受一个参数和一个接受该参数的函数并返回申请结果.