Safe Haskell | None |
---|---|

Language | Haskell2010 |

Simple vectorised constructors and projections.

## Synopsis

- type Vect a = (a, a)
- type VVar = Vect Var
- type VExpr = Vect CoreExpr
- type VBind = Vect CoreBind
- vectorised :: Vect a -> a
- lifted :: Vect a -> a
- mapVect :: (a -> b) -> Vect a -> Vect b
- vVarType :: VVar -> Type
- vNonRec :: VVar -> VExpr -> VBind
- vRec :: [VVar] -> [VExpr] -> VBind
- vVar :: VVar -> VExpr
- vType :: Type -> VExpr
- vTick :: Tickish Id -> VExpr -> VExpr
- vLet :: VBind -> VExpr -> VExpr
- vLams :: Var -> [VVar] -> VExpr -> VExpr
- vVarApps :: Var -> VExpr -> [VVar] -> VExpr
- vCaseDEFAULT :: VExpr -> VVar -> Type -> Type -> VExpr -> VExpr

# Documentation

vectorised :: Vect a -> a Source #

Get the vectorised version of a thing.

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

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

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

.