    {-# LANGUAGE CPP #-}

    -- | A strict pair

    module GHC.Utils.Containers.Internal.StrictPair (StrictPair(..), toPair) where

    -- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base
    import GHC.Base ()

    default ()

    -- | The same as a regular Haskell pair, but
    --
    -- @
    -- (x :*: _|_) = (_|_ :*: y) = _|_
    -- @
    data StrictPair a b = !a :*: !b

    infixr 1 :*:

    -- | Convert a strict pair to a standard pair.
    toPair :: StrictPair a b -> (a, b)
    toPair :: forall a b. StrictPair a b -> (a, b)
    toPair (a
    x :*: b
    y) = (a
    x, b
    y)
    {-# INLINE toPair #-}