Language.ImProve.Core
- data  E a where
- Ref :: AllE a => V a -> E a
 - Const :: AllE a => a -> E a
 - Add :: NumE a => E a -> E a -> E a
 - Sub :: NumE a => E a -> E a -> E a
 - Mul :: NumE a => E a -> a -> E a
 - Div :: NumE a => E a -> a -> E a
 - Mod :: E Int -> Int -> E Int
 - Not :: E Bool -> E Bool
 - And :: E Bool -> E Bool -> E Bool
 - Or :: E Bool -> E Bool -> E Bool
 - Eq :: AllE a => E a -> E a -> E Bool
 - Lt :: NumE a => E a -> E a -> E Bool
 - Gt :: NumE a => E a -> E a -> E Bool
 - Le :: NumE a => E a -> E a -> E Bool
 - Ge :: NumE a => E a -> E a -> E Bool
 - Mux :: AllE a => E Bool -> E a -> E a -> E a
 
 - data V a = V Bool [Name] a
 - type Name = String
 - type Path = [Name]
 - class PathName a where
 - class AllE a where
 - class AllE a => NumE a
 - data Const
 - data Statement
 - type VarInfo = (Bool, Path, Const)
 - varInfo :: AllE a => V a -> VarInfo
 - stmtVars :: Statement -> [VarInfo]
 - exprVars :: E a -> [VarInfo]
 
Documentation
A logical, arithmetic, comparative, or conditional expression.
Constructors
| Ref :: AllE a => V a -> E a | |
| Const :: AllE a => a -> E a | |
| Add :: NumE a => E a -> E a -> E a | |
| Sub :: NumE a => E a -> E a -> E a | |
| Mul :: NumE a => E a -> a -> E a | |
| Div :: NumE a => E a -> a -> E a | |
| Mod :: E Int -> Int -> E Int | |
| Not :: E Bool -> E Bool | |
| And :: E Bool -> E Bool -> E Bool | |
| Or :: E Bool -> E Bool -> E Bool | |
| Eq :: AllE a => E a -> E a -> E Bool | |
| Lt :: NumE a => E a -> E a -> E Bool | |
| Gt :: NumE a => E a -> E a -> E Bool | |
| Le :: NumE a => E a -> E a -> E Bool | |
| Ge :: NumE a => E a -> E a -> E Bool | |
| Mux :: AllE a => E Bool -> E a -> E a -> E a | 
A mutable variable.