ghc-7.0.2: The GHC API



Simple vectorised constructors and projections.



type Vect a = (a, a)Source

Contains the vectorised and lifted versions of some thing.

vectorised :: Vect a -> aSource

Get the vectorised version of a thing.

lifted :: Vect a -> aSource

Get the lifted version of a thing.

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

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

vVarType :: VVar -> TypeSource

Get the type of a vectorised variable.

vNonRec :: VVar -> VExpr -> VBindSource

Make a vectorised non-recursive binding.

vRec :: [VVar] -> [VExpr] -> VBindSource

Make a vectorised recursive binding.

vVar :: VVar -> VExprSource

Wrap a vectorised variable as a vectorised expression.

vType :: Type -> VExprSource

Wrap a vectorised type as a vectorised expression.

vNote :: Note -> VExpr -> VExprSource

Make a vectorised note.

vLet :: VBind -> VExpr -> VExprSource

Make a vectorised let expresion.



:: 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.

vLamsWithoutLC :: [VVar] -> VExpr -> VExprSource

Like vLams but the lifted version doesn't bind the lifting context.

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

Apply some argument variables to an expression. The lifted version is also applied to the variable of the lifting context.