module Data.Algorithm.SatSolver.Var (
  -- * Type
  Var(..)

  -- * Constructing
, mk
) where

-- |'Var' type
newtype Var a = Var { getName :: a } deriving (Eq, Ord)

-- |Show instance
instance (Show a) => Show (Var a) where
  show = show . getName

-- |'mk' @n@ makes a propositional variable with name @n@.
--
-- >>> [mk i | i <- [1..4]]
-- [1,2,3,4]
-- >>> [mk i | i <- ['a'..'d']]
-- ['a','b','c','d']
-- >>> [mk o | o <- [LT .. GT]]
-- [LT,EQ,GT]
mk n =  Var { getName = n }