packages feed

g2-0.1.0.0: src/G2/Language/Monad/TypeClasses.hs

module G2.Language.Monad.TypeClasses ( lookupTCDictTC
                                               , typeClassInstTC
                                               , numTCM
                                               , ordTCM ) where

import qualified G2.Language.KnownValues as KV
import G2.Language.Syntax
import G2.Language.TypeClasses
import G2.Language.Monad.Support

import qualified Data.Map as M

lookupTCDictTC :: FullState s m => Name -> Type -> m (Maybe Id)
lookupTCDictTC n t = do
    tc <- typeClasses
    return $ lookupTCDict tc n t

typeClassInstTC :: FullState s m => M.Map Name Id -> Name -> Type -> m (Maybe Expr)
typeClassInstTC m n t = do
    tc <- typeClasses
    return $ typeClassInst tc m n t

numTCM :: FullState s m => m Name
numTCM = return . KV.numTC =<< knownValues

ordTCM :: FullState s m => m Name
ordTCM = return . KV.ordTC =<< knownValues