atom-0.0.3: A DSL for embedded hard realtime applications.

Language.Atom.Expressions

Contents

Synopsis

Types

data E a whereSource

A typed expression.

Constructors

VRef :: V a -> E a 
Const :: a -> E a 
Cast :: (NumE a, NumE b) => E a -> E b 
Add :: NumE a => E a -> E a -> E a 
Sub :: NumE a => E a -> E a -> E a 
Mul :: NumE a => E a -> E a -> E a 
Div :: NumE a => E a -> E a -> E a 
Mod :: IntegralE a => E a -> E a -> E a 
Not :: E Bool -> E Bool 
And :: E Bool -> E Bool -> E Bool 
BWNot :: IntegralE a => E a -> E a 
BWAnd :: IntegralE a => E a -> E a -> E a 
BWOr :: IntegralE a => E a -> E a -> E a 
Shift :: IntegralE a => E a -> Int -> E a 
Eq :: (EqE a, OrdE a) => E a -> E a -> E Bool 
Lt :: OrdE a => E a -> E a -> E Bool 
Mux :: E Bool -> E a -> E a -> E a 
F2B :: E Float -> E Word32 
D2B :: E Double -> E Word64 
B2F :: E Word32 -> E Float 
B2D :: E Word64 -> E Double 

Instances

Expr a => Eq (E a) 
(OrdE a, NumE a, Num a, Fractional a) => Fractional (E a) 
(Num a, NumE a, OrdE a) => Num (E a) 
Show (E a) 
(Expr a, OrdE a, EqE a, IntegralE a, Bits a) => Bits (E a) 
Expr a => Width (E a) 

data V a Source

Variables updated by state transition rules.

Constructors

V UV 

Instances

Eq (V a) 
Expr a => Width (V a) 

data UE Source

An untyped term.

Instances

data UV Source

Unsigned variables.

Constructors

UV Int String UVLocality 

Instances

data UVLocality Source

UV locality.

Constructors

Local Const 
External Type 

Instances

data Type Source

The type of a E.

class Width a whereSource

Methods

width :: a -> IntSource

Instances

Width UE 
Width Const 
Width Type 
Expr a => Width (E a) 
Expr a => Width (V a) 

ue :: Expr a => E a -> UESource

uv :: V a -> UVSource

ueType :: UE -> TypeSource

The type of an UE.

ueUpstream :: UE -> [UE]Source

The list of UEs adjacent upstream of a UE.

uvSet :: UE -> [UV]Source

A set of all variables referenced in a term.

Constants

true :: E BoolSource

True term.

false :: E BoolSource

False term.

Variable Reference and Assignment

value :: V a -> E aSource

Returns the value of a V.

Logical Operations

not_ :: E Bool -> E BoolSource

Logical negation.

(&&.) :: E Bool -> E Bool -> E BoolSource

Logical AND.

(||.) :: E Bool -> E Bool -> E BoolSource

Logical OR.

and_ :: [E Bool] -> E BoolSource

The conjunction of a E Bool list.

or_ :: [E Bool] -> E BoolSource

The disjunction of a E Bool list.

any_ :: (a -> E Bool) -> [a] -> E BoolSource

True iff the predicate is true for any element.

all_ :: (a -> E Bool) -> [a] -> E BoolSource

True iff the predicate is true for all elements.

Equality and Comparison

(==.) :: (EqE a, OrdE a) => E a -> E a -> E BoolSource

Equal.

(/=.) :: (EqE a, OrdE a) => E a -> E a -> E BoolSource

Not equal.

(<.) :: OrdE a => E a -> E a -> E BoolSource

Less than.

(<=.) :: OrdE a => E a -> E a -> E BoolSource

Less than or equal.

(>.) :: OrdE a => E a -> E a -> E BoolSource

Greater than.

(>=.) :: OrdE a => E a -> E a -> E BoolSource

Greater than or equal.

min_ :: OrdE a => E a -> E a -> E aSource

Returns the minimum of two numbers.

minimum_ :: OrdE a => [E a] -> E aSource

Returns the minimum of a list of numbers.

max_ :: OrdE a => E a -> E a -> E aSource

Returns the maximum of two numbers.

maximum_ :: OrdE a => [E a] -> E aSource

Returns the maximum of a list of numbers.

limit :: OrdE a => E a -> E a -> E a -> E aSource

Limits between min and max.

Arithmetic Operations

div_ :: IntegralE a => E a -> E a -> E aSource

Division.

mod_ :: IntegralE a => E a -> E a -> E aSource

Modulo.

Conditional Operator

mux :: Expr a => E Bool -> E a -> E a -> E aSource

Conditional expression.

 mux test onTrue ofFalse

Smart constructors for untyped expressions.

uand :: UE -> UE -> UESource

uor :: UE -> UE -> UESource

ueq :: UE -> UE -> UESource

umux :: UE -> UE -> UE -> UESource