{-# OPTIONS_GHC -fno-warn-orphans #-}

-- | Weaken @'Magic'@ to '()', to separate weak forms from binrep-land.

module Binrep.Instances.Strongweak.Type.Magic where

import Binrep.Type.Magic
import Strongweak

-- | Weaken a @'Magic' a@ to the unit '()'.
instance Weaken   (Magic a) where
    type Weakened (Magic a) = ()
    weaken :: Magic a -> Weakened (Magic a)
weaken Magic a
Magic = ()

-- | Strengthen the unit '()' to some @'Magic' a@.
instance Strengthen (Magic a) where strengthen :: Weakened (Magic a) -> Either StrengthenFailure' (Magic a)
strengthen () = Magic a -> Either StrengthenFailure' (Magic a)
forall a b. b -> Either a b
Right Magic a
forall {k} (a :: k). Magic a
Magic