Declarations will look like:
type
Either[T, E] = case
of Le: T
of Ri: E
Option[T] = case
of Some: T
of None: discard
IfTree = object
condition, thenPart, elsePart: Tree
ProcTree = object
fn: Tree
args: seq[Tree]
Tree = ref case
of StrValue: string
of IntValue: int
of IfStmt: IfTree
of ProcCall: ProcTree
Run
What kind of pattern matching will be supported is not clear. However, the
`let` and `var` annotations have fallen out of favor, instead the mutability
will simply be derived from the expression that is matched.