cabal-install-3.6.0.0: cabal-install-solver/src/Distribution/Solver/Modular/Var.hs
{-# LANGUAGE DeriveFunctor #-}
module Distribution.Solver.Modular.Var (
Var(..)
, showVar
, varPN
) where
import Prelude hiding (pi)
import Distribution.Solver.Modular.Flag
import Distribution.Solver.Types.PackagePath
{-------------------------------------------------------------------------------
Variables
-------------------------------------------------------------------------------}
-- | The type of variables that play a role in the solver.
-- Note that the tree currently does not use this type directly,
-- and rather has separate tree nodes for the different types of
-- variables. This fits better with the fact that in most cases,
-- these have to be treated differently.
data Var qpn = P qpn | F (FN qpn) | S (SN qpn)
deriving (Eq, Ord, Show, Functor)
showVar :: Var QPN -> String
showVar (P qpn) = showQPN qpn
showVar (F qfn) = showQFN qfn
showVar (S qsn) = showQSN qsn
-- | Extract the package name from a Var
varPN :: Var qpn -> qpn
varPN (P qpn) = qpn
varPN (F (FN qpn _)) = qpn
varPN (S (SN qpn _)) = qpn