{-# LANGUAGE UnboxedSums #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE MagicHash #-} module Mikan.Utils.Maybe.Unboxable where data Maybe# a = Maybe# (# a | (# #) #) pattern Nothing# :: Maybe# a pattern $bNothing# :: forall a. Maybe# a $mNothing# :: forall {r} {a}. Maybe# a -> ((# #) -> r) -> ((# #) -> r) -> r Nothing# = Maybe# (# | (# #) #) pattern Just# :: a -> Maybe# a pattern $bJust# :: forall a. a -> Maybe# a $mJust# :: forall {r} {a}. Maybe# a -> (a -> r) -> ((# #) -> r) -> r Just# a = Maybe# (# a | #) {-# COMPLETE Nothing#, Just# #-}