ddc-core-flow-0.4.1.1: Disciplined Disciple Compiler data flow compiler.

Safe HaskellNone

DDC.Core.Flow.Compounds

Contents

Description

Short-hands for constructing compound expressions.

Synopsis

Documentation

Fragment specific kinds

Fragment specific types

isRateNatType :: Type Name -> BoolSource

Check if some type is a fully applied type of a RateNat

isSeriesType :: Type Name -> BoolSource

Check if some type is a fully applied type of a Series.

isRefType :: Type Name -> BoolSource

Check is some type is a fully applied type of a Ref.

isVectorType :: Type Name -> BoolSource

Check is some type is a fully applied type of a Vector.

Primtiive types

tVoid :: Type NameSource

Primitive `Void#` type.

tBool :: Type NameSource

Primitive `Bool#` type.

tNat :: Type NameSource

Primitive Nat# type.

tInt :: Type NameSource

Primitive `Int#` type.

tWord :: Int -> Type NameSource

Primitive `WordN#` type of the given width.

tFloat :: Int -> Type NameSource

Primitive `FloatN#` type of the given width.

tVec :: Int -> Type Name -> Type NameSource

Primitive VecN# a.

Primitive literals and data constructors

xBool :: Bool -> Exp a NameSource

A literal Bool#

dcBool :: Bool -> DaCon NameSource

A literal Bool# data constructor.

xNat :: Integer -> Exp a NameSource

A literal Nat#

dcNat :: Integer -> DaCon NameSource

A Literal Nat# data constructor.

dcTuple1 :: DaCon NameSource

Data constructor for Tuple1#

xTuple2 :: Type Name -> Type Name -> Exp a Name -> Exp a Name -> Exp a NameSource

Construct a Tuple2#

dcTuple2 :: DaCon NameSource

Data constructor for Tuple2#

dcTupleN :: Int -> DaCon NameSource

Data constructor for n-tuples

Primitive Vec operators

xvRep :: Int -> Type Name -> Exp () Name -> Exp () NameSource

xvProj :: Int -> Int -> Type Name -> Exp () Name -> Exp () NameSource

xvGather :: Int -> Type Name -> Exp () Name -> Exp () Name -> Exp () NameSource

xvScatter :: Int -> Type Name -> Exp () Name -> Exp () Name -> Exp () Name -> Exp () NameSource

Series operators

xProj :: [Type Name] -> Int -> Exp () Name -> Exp () NameSource

xRateOfSeries :: TypeF -> TypeF -> ExpF -> ExpFSource

xNatOfRateNat :: TypeF -> ExpF -> ExpFSource

xNext :: TypeF -> TypeF -> ExpF -> ExpF -> ExpFSource

xNextC :: Int -> TypeF -> TypeF -> ExpF -> ExpF -> ExpFSource

xDown :: Int -> TypeF -> TypeF -> ExpF -> ExpF -> ExpFSource

xTail :: Int -> TypeF -> TypeF -> ExpF -> ExpF -> ExpFSource

Control operators

xLoopN :: TypeF -> ExpF -> ExpF -> ExpFSource

xGuard :: ExpF -> ExpF -> ExpF -> ExpFSource

xSegment :: ExpF -> ExpF -> ExpF -> ExpFSource

xSplit :: Int -> TypeF -> ExpF -> ExpF -> ExpF -> ExpFSource

Store operators

xWrite :: Type Name -> Exp () Name -> Exp () Name -> Exp () NameSource

xWriteVector :: Type Name -> Exp () Name -> Exp () Name -> Exp () Name -> Exp () NameSource

xWriteVectorC :: Int -> Type Name -> Exp () Name -> Exp () Name -> Exp () Name -> Exp () NameSource

xTailVector :: Int -> Type Name -> Type Name -> Exp () Name -> Exp () Name -> Exp () NameSource