atom-0.0.1: 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 
Cust :: String -> 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 UV Source

Unsigned variables.

Constructors

UV Int String Const 

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.

Custom Es

customDouble :: String -> E DoubleSource

Creates a custom E Double.

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