ghc-7.6.3: The GHC API

Safe Haskell | None

Vectorise.Utils.Poly

Description

Auxiliary functions to vectorise type abstractions.

Synopsis

- polyAbstract :: [TyVar] -> ([Var] -> VM a) -> VM a
- polyApply :: CoreExpr -> [Type] -> VM CoreExpr
- polyVApply :: VExpr -> [Type] -> VM VExpr
- polyArity :: [TyVar] -> VM Int

# Documentation

polyAbstract :: [TyVar] -> ([Var] -> VM a) -> VM a

Vectorise under the `PA` dictionary variables corresponding to a set of type arguments.

The dictionary variables are new local variables that are entered into the local vectorisation map.

The purpose of this function is to introduce the additional `PA` dictionary arguments that are needed when vectorising type abstractions.

polyApply :: CoreExpr -> [Type] -> VM CoreExpr

Apply a expression to its type arguments as well as `PA` dictionaries for these type arguments.

polyVApply :: VExpr -> [Type] -> VM VExpr

Apply a vectorised expression to a set of type arguments together with `PA` dictionaries for these type arguments.

polyArity :: [TyVar] -> VM Int

Determine the number of `PA` dictionary arguments required for a set of type variables (depends on their kinds).