Ticket #303 (closed bug: duplicate)
Rebindable syntax doesn't work as advertised
Description (last modified by simonpj) (diff)
-- -- According to section 7.3.5. Rebindable syntax in the user's manual -- this should work (unless I totally misunderstood it). -- It doesn't. -- -- Compile with -fno-implicit-prelude -- -- Lennart -- import Prelude hiding(Monad(..)) class B a where b :: a instance B Bool where b = False class M m where return :: a -> m a (>>=) :: (B a) => m a -> (a -> m b) -> m b (>>) :: (B a) => m a -> m b -> m b fail :: String -> m a p >> q = p >>= \ _ -> q fail s = error s instance M Maybe where return x = Just x (>>=) = error "bind" test :: Maybe Bool test = do x <- return True return (x && x) unJust (Just x) = x main = print (unJust test)
Note: See TracTickets for help on using tickets.