{-# OPTIONS_GHC -O2 #-}
{-# OPTIONS_GHC -fno-warn-missing-methods #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- {-# OPTIONS_GHC -fno-spec-constr #-} -- Makes the problem go away.
-- {-# OPTIONS_GHC -fspec-constr-count=1 #-} -- Makes the problem go away.
module T10602 where
-- Copy-pasting T10602b.hs into the current module makes the problem go away.
import T10602b
data PairS a = PairS a a
-- Removing the '~' makes the problem go away.
(PairS _ _) >> ~(PairS b g) = PairS b g
class Binary t where
put :: t -> PairS ()
-- Not using a newtype makes the problem go away.
newtype A a = A [a]
instance Binary a => Binary (A a) where
put (A xs) = case splitAt 254 xs of
(_, []) -> foldr (>>) (PairS () ()) (map put xs)
(_, b) -> put (A b)