    {-# LANGUAGE Trustworthy #-}
    {-# LANGUAGE NoImplicitPrelude, PatternSynonyms #-}
    -----------------------------------------------------------------------------
    -- |
    -- Module      :  GHC.Tuple
    -- Copyright   :  (c) The University of Glasgow 2001
    -- License     :  BSD-style (see the file libraries/ghc-prim/LICENSE)
    --
    -- Maintainer  :  libraries@haskell.org
    -- Stability   :  experimental
    -- Portability :  non-portable (GHC extensions)
    --
    -- The tuple data types
    --
    -- Users should not import this module.  It is GHC internal only.
    --
    -----------------------------------------------------------------------------

    module GHC.Tuple (
      module GHC.Tuple.Prim,
      Solo (Solo, MkSolo),
    ) where

    import GHC.CString ()  -- Make sure we do it first, so that the
                           -- implicit Typeable stuff can see GHC.Types.TyCon
                           -- and unpackCString# etc
    import GHC.Tuple.Prim

    default () -- Double and Integer aren't available yet

    {-# DEPRECATED Solo "The Solo constructor has been renamed to MkSolo to avoid punning." #-}
    pattern Solo :: a -> Solo a
    pattern $mSolo :: forall {r} {a}. Solo a -> (a -> r) -> ((# #) -> r) -> r
    $bSolo :: forall a. a -> Solo a
    Solo x = MkSolo x
    {-# COMPLETE Solo #-}