
#11650: Documentation does not mention that default definitions for Alternative(some, many) can easily blow up -------------------------------------+------------------------------------- Reporter: bgamari | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Documentation | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): We could also fix this issue by making the `Applicative` instance less strict: {{{#!hs instance Applicative U1 where U1 <*> _ = U1 }}} I'm not sure which is the best approach. `Proxy` (which is isomorphic to `U1`) doesn't pattern-match on its arguments in ''any'' of its instances, which allows it to short-circuit in a lot of possibly diverging computations. Then again, `Proxy` doesn't have an `Alternative`/`MonadPlus` instance for some reason... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11650#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler