Check out my personal projects below
- Show all
- Functional Programming6
- Programming Languages3
- Ray tracing3
Show 6 projects filtered by Functional Programming.
Minimal Visual Pedagogical Interpreter (2020)
The MVP (minimal visual pedagogical) interpreter is a substitution-based interpreter on a toy language. My goal is to demonstrate small-step operational semantics of programming languages visually for students new to this concept. The project supports single stepping forward/backward for the program execution and visualizes the AST at each step.
Ocamlpt is a path tracer live-coded in Youtube stream. The path tracer is based on Peter Shirley's fantastic book series "Ray Tracing in a Weekend." Some challenges I met include the poor support for graphics programming in the OCaml ecosystem and the inability of operator overloading in OCaml.
Embedded ML (2018)
Embedded ML is a static-typed embedded scripting language written in C++. The Embedded ML language is inspired by languages from the ML family. This project includes a compiler and a bytecode stack-machine runtime. The compiler first parses the source code by a hand-rolled a recursive-descent pratt parser and then pipes the result AST (abstract syntax tree) into type checker and code generator. Afterward, the runtime executes the bytecode generated by the code generator.
Reversi Elm (2018-2019)
Reversi-Elm is a browser-based clone of the classic board game Reversi in the Elm Programming Language. It supports both human vs. human games, human vs. computer games, and computer vs. computer games. The AI agent is built based on the minimax algorithm with alpha-beta pruning. It also uses a simple evaluation function which bases on piece count, location of pieces, and mobility (number of legal moves).