mac*_*ian 5 syntax haskell function definition function-declaration
我注意到了(虽然我曾经被告知(a -> a)并且a -> a意味着同样的事情),但是当我使用时会收到错误消息(a -> a).我应该只(a -> a)在类型中使用括号时使用吗?(即(5 + 3)代替5 + 3)?只是不确定什么时候有必要
ken*_*ytm 14
(a -> a)并且a -> a都是一样的孤独,
ff :: (a -> a) -- this compiles
ff = id
gg :: a -> a
gg = id
h :: a -> a -> Bool
h _ _ = True
i = h ff gg -- this compiles => ff & gg are of the same type.
Run Code Online (Sandbox Code Playgroud)
但与更多类型相结合时会有所不同,例如:
a -> a -> b
(a -> a) -> b
Run Code Online (Sandbox Code Playgroud)
这是因为->是右关联的,所以a -> a -> b实际上意味着a -> (a -> b)(接受a并返回一个函数),这与(a -> a) -> b(接受一个函数并返回一个b)不同.
这就像是(1+2)*3不同的1+2*3.