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.