pub enum HaskellExpr {
Show 16 variants
Lit(HaskellLit),
Var(String),
App(Box<HaskellExpr>, Vec<HaskellExpr>),
Lambda(Vec<HaskellPattern>, Box<HaskellExpr>),
Let(String, Box<HaskellExpr>, Box<HaskellExpr>),
Where(Box<HaskellExpr>, Vec<HaskellFunction>),
If(Box<HaskellExpr>, Box<HaskellExpr>, Box<HaskellExpr>),
Case(Box<HaskellExpr>, Vec<HaskellCaseAlt>),
Do(Vec<HaskellDoStmt>),
ListComp(Box<HaskellExpr>, Vec<HsListQual>),
Tuple(Vec<HaskellExpr>),
List(Vec<HaskellExpr>),
Neg(Box<HaskellExpr>),
InfixApp(Box<HaskellExpr>, String, Box<HaskellExpr>),
Operator(String),
TypeAnnotation(Box<HaskellExpr>, HaskellType),
}Expand description
Haskell expression AST.
Variants§
Lit(HaskellLit)
Literal value
Var(String)
Variable or constructor reference: foo, Just, (:)
App(Box<HaskellExpr>, Vec<HaskellExpr>)
Function application: f x y
Lambda(Vec<HaskellPattern>, Box<HaskellExpr>)
Lambda: \x y -> body
Let(String, Box<HaskellExpr>, Box<HaskellExpr>)
Let expression: let x = e1 in e2
Where(Box<HaskellExpr>, Vec<HaskellFunction>)
Where clause as an expression wrapper
If(Box<HaskellExpr>, Box<HaskellExpr>, Box<HaskellExpr>)
If-then-else: if c then t else e
Case(Box<HaskellExpr>, Vec<HaskellCaseAlt>)
Case expression
Do(Vec<HaskellDoStmt>)
Do notation block
ListComp(Box<HaskellExpr>, Vec<HsListQual>)
List comprehension: [ body | quals ]
Tuple(Vec<HaskellExpr>)
Tuple: (a, b, c)
List(Vec<HaskellExpr>)
List: [a, b, c]
Neg(Box<HaskellExpr>)
Arithmetic negation: negate x
InfixApp(Box<HaskellExpr>, String, Box<HaskellExpr>)
Infix application: x op y or x + y
Operator(String)
Operator section / raw operator reference: (+), map
TypeAnnotation(Box<HaskellExpr>, HaskellType)
Type annotation: expr :: Type
Trait Implementations§
Source§impl Clone for HaskellExpr
impl Clone for HaskellExpr
Source§fn clone(&self) -> HaskellExpr
fn clone(&self) -> HaskellExpr
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HaskellExpr
impl Debug for HaskellExpr
Source§impl Display for HaskellExpr
impl Display for HaskellExpr
Source§impl PartialEq for HaskellExpr
impl PartialEq for HaskellExpr
impl StructuralPartialEq for HaskellExpr
Auto Trait Implementations§
impl Freeze for HaskellExpr
impl RefUnwindSafe for HaskellExpr
impl Send for HaskellExpr
impl Sync for HaskellExpr
impl Unpin for HaskellExpr
impl UnsafeUnpin for HaskellExpr
impl UnwindSafe for HaskellExpr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more