The goal of this project is to develop a meta-circular evaluator for a subset of the Julia programming language named MetaJulia. More specifically, the evaluator needs to support the evaluation of untyped but correct Julia programs.
It must support:
- Basic Types
- Operations
- Conditionals
- If statements
- Blocks of code
- Let statements
- Functions
- Higher-order functions
- Anonymous Functions
- Global keyword
- Short-circuit evaluation
- Quote form
- Fact expressions
- Macros