flocc-pffb

Stabilityexperimental
Maintainerdeveloper@flocc.net
Safe HaskellNone

Compiler.Types2.FillGaps

Description

For more information please see http://www.flocc.net/

Synopsis

Documentation

possibleSubs :: Monad m => TyTerm -> IdxMonad m (IntMap [TyTerm])

possibleSubs term. Visits term looking for parts of the type that |are still abstract (type variables) and return possible subsitutions |that would make them concrete. If a term is already concrete returns [].

remRedundantDims :: IntMap TyTerm -> IntMap TyTerm

remRedundantDims types. Finds all redundant mirror dims in |types and replaces then with Null.

getRedundantDims :: [TyTerm] -> ([TyTerm], [TyTerm], [TyTerm])

getRedundantDims types. Returns a list of dim vars that |are only every used as mirror dims, never as part, and so |are redundant i.e. can be replaced with ().

fillGapsInEnv :: Monad m => IntMap TyTerm -> IdxMonad m (IntMap TyTerm)

possibleSubs term. Visits term looking for parts of the type that |are still abstract (type variables) and return possible subsitutions |that would make them concrete. If a term is already concrete returns []. TODO add DMap...

fillGapsInEnv termEnv. Searches the terms in the env, looking for gaps, |finds possible values for each one, groups by term var id, and returns |a map from term var ids to possible lists of values.