toysolver-0.1.0: src/ToySolver/Data/Var.hs
-----------------------------------------------------------------------------
-- |
-- Module : ToySolver.Data.Var
-- Copyright : (c) Masahiro Sakai 2011-2013
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : portable
--
-----------------------------------------------------------------------------
module ToySolver.Data.Var
( Var
, VarSet
, VarMap
, Variables (..)
, Model
) where
import Data.IntMap (IntMap)
import Data.IntSet (IntSet)
import qualified Data.IntSet as IntSet
import Data.Ratio
-- ---------------------------------------------------------------------------
-- | Variables are represented as non-negative integers
type Var = Int
-- | Set of variables
type VarSet = IntSet
-- | Map from variables
type VarMap = IntMap
-- | collecting free variables
class Variables a where
vars :: a -> VarSet
instance Variables a => Variables [a] where
vars = IntSet.unions . map vars
-- | A @Model@ is a map from variables to values.
type Model r = VarMap r
-- ---------------------------------------------------------------------------