Haskell 中 IO a 和 IO (a) 有什么区别?

Jam*_*ter 2 haskell type-theory ghc

Haskell 中 IO (a) 和 IO a 有什么区别?

例如:

IO (String)IO String

IO (Int)IO Int

我见过的大多数书籍都将类型放在括号中,然后将其放在 IO 之后,但对我来说,它们是否是同一件事并不明显。

lef*_*out 7

对于编译器来说没有什么区别。

一般来说,在 Haskell 中,我们喜欢避免任何不必要的括号,因此这IO String是首选样式。但当然你确实需要括号,例如IO (Maybe Int)