--- layout: default title: Examples --- ## Types of Expressions - function definition Expressions - macro define Expressions -> core library function - anonymous function defines -> `() {}` that can be assigned - lambda function defines -> `[]() {}` - class definition Expressions -> `class ident() {}` - data definition Expressions -> `data ident {}` - variable definition Expressions -> `let ident = expr`, `const ident = expr` - variable redefinition Expressions -> `ident = expr` ## Types of expressions Most things are an expression like rust. Expressions evaluate to a value like an expression, but does not return it. Instead it prob assigns it. But unlike rust we dont have semicolons and instead rely on whitespace (default style = 2 spaces of inlining, 1 space between clauses). We need a clear way of distinguishing between expressions and Expressions. So rei's keywords and design allows us to separate between them. Cues like `let` should delineate a statement. All expressions evaluate to a value.