DeepDarkFantasy-0.2017.8.4: DDF/Meta/Dual.hs
module DDF.Meta.Dual where
newtype Dual l r = Dual {runDual :: (l, r)}
instance Eq l => Eq (Dual l r) where
(Dual (l, _)) == (Dual (r, _)) = l == r
instance Ord l => Ord (Dual l r) where
(Dual (l, _)) `compare` (Dual (r, _)) = l `compare` r
dualOrig (Dual (l, _)) = l
dualDiff (Dual (_, r)) = r
mkDual l r = Dual (l, r)