Skip to content
AgileLogics
Advanced 5 min read

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.