我对Haskell中的函数有以下定义.
> q7 :: forall a. forall b. ((a -> b) -> a) -> a
Run Code Online (Sandbox Code Playgroud)
我要么为它创建一个定义,要么说明为什么定义不存在.这是我的想法:
q7接受任何类型的a和b.该声明(a -> b) -> a将通过采取两个项目并返回后者来实施.现在,如果我再进一步,我可以返回同样的" a"来实现((a -> b) -> a) -> a.我看到在一个问题a和b可以是任何类型,因此对于每个实例a,可能a是不同的类型?例如,它可能是这样的((Int -> Bool) -> [Char]) -> Int吗?我可能谋杀了那种语法.如果有人有任何提示,或者有人可以确认或否认我的想法,我将非常感激!