ghc-8.2.2: The GHC API

Safe HaskellNone



Simple vectorised constructors and projections.



type Vect a = (a, a) #

Contains the vectorised and lifted versions of some thing.

type VVar = Vect Var #

vectorised :: Vect a -> a #

Get the vectorised version of a thing.

lifted :: Vect a -> a #

Get the lifted version of a thing.

mapVect :: (a -> b) -> Vect a -> Vect b #

Apply some function to both the vectorised and lifted versions of a thing.

vVarType :: VVar -> Type #

Get the type of a vectorised variable.

vNonRec :: VVar -> VExpr -> VBind #

Make a vectorised non-recursive binding.

vRec :: [VVar] -> [VExpr] -> VBind #

Make a vectorised recursive binding.

vVar :: VVar -> VExpr #

Wrap a vectorised variable as a vectorised expression.

vType :: Type -> VExpr #

Wrap a vectorised type as a vectorised expression.

vTick :: Tickish Id -> VExpr -> VExpr #

Make a vectorised note.

vLet :: VBind -> VExpr -> VExpr #

Make a vectorised let expression.

vLams #


:: Var

Var bound to the lifting context.

-> [VVar]

Parameter vars for the abstraction.

-> VExpr

Body of the abstraction.

-> VExpr 

Make a vectorised lambda abstraction.

The lifted version also binds the lifting context lc.

vVarApps :: Var -> VExpr -> [VVar] -> VExpr #

Apply an expression to a set of argument variables.

The lifted version is also applied to the variable of the lifting context.