I\'ve been playing with some examples from Simon Marlow\'s book about parallel and concurrent programming in Haskell and stumbled across an interesting behavior that I don\'t re
Because (,)
is a constructor, the difference makes no difference to Haskell's semantics (:sprint
gives access to internal thunk implementation details so doesn't count.) So this is a question of which optimizations and trade-offs GHC does when compiling (x,x)
in different positions. Someone else may know the precise reason in these cases.