Без всяких скобок:
Prelude> [1,2] >>= \n -> ['a', 'b'] >>= \ch -> return (n, ch)
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
Скобки предполагают левую ассоциативность:
Prelude> ([1,2] >>= \n -> ['a', 'b']) >>= \ch -> return (n, ch)
<interactive>:22:49: Not in scope: `n'
Скобки предполагают правую ассоциативность:
Prelude> [1,2] >>= (\n -> ['a', 'b'] >>= \ch -> return (n, ch))
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
Разве >>=
не является левой ассоциативностью? Почему при отсутствии круглых скобок GHCi оценивает выражение так, как будто >>=
является правоассоциативным?