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