Old CS course project assignment written in OCaml. The project is an implementation of an interpreter for a simple functional programming language that includes the following primitives:
- Basic arithmetic operations (addition, subtraction, product and division) on integers
- Logical operators (negation, conjunction, disjunction) on booleans
- Comparison operators (equality, comparison to zero)
- Identifiers and top-level (global) bindings
- Recursive top-level bindings
- Anonymous functions (which can be bound to an identifier)
- Conditional constructs (if-then-else)
- Tuple datatype and operators (Head, Tail, Cons)
- Pipe operator - which is basically a list of closures
- ManyTimes opeartor - which applies an expression many times to an integer