A-P*_*A-P 2 haskell functional-programming typeerror
我试图找出为什么这段代码没有按预期工作。
我想创建一个函数run,它将某个函数作为输入并返回应用于自身的函数。
run::(t1->t2)->t2
run a = a a
Run Code Online (Sandbox Code Playgroud)
包含的类型应该是通用的,因为我希望它适用于任何东西,但是当我尝试并且不确定为什么时,我遇到了无限的类型错误。
你说a :: t1 -> t2。这意味着它的参数应该具有类型t1。然后你将它应用到自身,a a。这意味着它的参数是a.
所以现在我们有一个等式:参数应该同时具有类型t1(因为它是 的参数a)和类型t1 -> t2(因为它是a):
t1 ~ t1 -> t2
~ (t1 -> t2) -> t2
~ ((t1 -> t2) -> t2) -> t2
~ (((t1 -> t2) -> t2) -> t2) -> t2
~ ...
Run Code Online (Sandbox Code Playgroud)
每行都接续前一行,并替换t1为它等于的内容t1 -> t2。没有有限类型满足给定的等式。