Advanced Projects
Prerequisites: Level 3 — Advanced
Build these using testing, monad transformers, concurrency, parsing, and real-world libraries from Level 3.
1. A Small Interpreter
Parse a tiny language (numbers, variables, let, if, functions) with
megaparsec into an AST, evaluate it inside a ReaderT Env (Except EvalError) stack, and add a REPL. Test the parser with Hspec and the
evaluator with QuickCheck properties.
2. A JSON REST API
Build a Servant API for a notes or bookmarks service with aeson-encoded
request and response types, an in-memory store in an STM TVar, input
validation, and Hspec tests that call the handlers directly.
3. A Concurrent Web Crawler
Fetch pages concurrently with async and a bounded pool of worker
threads, share the set of visited URLs through STM, stop at a maximum
depth, and print a report. Profile it and remove any space leaks.