yon*_*tix -4 haskell functional-programming
以下Haskell函数的签名是什么:
fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)
a)((a-> b) - > a-> b) - > a-> b
b)签名无法合成
c)(a-> a) - > a
谢谢!
这个问题看起来像一个课程作业/测试问题.我会帮你自己找到解决方案:
首先你可能安装了GHC,所以你可以运行ghci一个haskell repl.
关于GHCi的GHC用户指南中有一节.但它很长.
如果你启动GHCi,你会得到一个提示,你可以在其中键入Haskell表达式:
Prelude> 1 + 1
2
Prelude> map (\x -> x + x) [1, 2, 3]
[2,4,6]
Run Code Online (Sandbox Code Playgroud)
您还可以将表达式绑定到名称,并定义函数:
Prelude> let fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)
并且最强大的功能之一是询问表达式的类型:
Prelude> :t map (\x -> x + x)
map (\x -> x + x) :: Num b => [b] -> [b]
Prelude> :t fix
... output omitted
Run Code Online (Sandbox Code Playgroud)
这就是你如何找到问题的解决方案.在您知道之后,您可以问为什么它的类型fix是什么.