(a - > a)和a - > a之间的差异

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.