## Advanced FP Course ### You: * Have completed, or are capable of completing, the [Data61 FP Course](https://github.com/data61/fp-course) * Have a few months self-study to your name * Want to know how to build larger applications with statically typed FP * Are willing to accept that a web application is a sufficient choice ### We: * Have constructed a sequence of goals of increasing difficulty * Have provided a framework within which to apply these goals * Have included relevant components of larger applications: - Package dependencies - Project configuration - Application testing & building - Encoding / Decoding messages (JSON & Binary) - Persistent storage integration - App state & configuration management - Error handling & reporting * Will utilise both type & test driven development techniques * Will explain architectural and design trade-offs when appropriate ### Course Sequence: You're welcome to setup your own project with ``$ cabal init`` and follow along with the general flow of the course or work through the exercises in the projects provided. Subsequent lessons may have spoilers, don't cheat yourself out of the experience. NB : No doctests yet :( * Level 01 : Simple Hello World web app. * Level 02 : Define our application spec with types! * Level 03 : Add some flexible configuration * Level 04 : Testing & Tools (hspec & ghcid) * Level 05 : Database layer (sqlite-simple) * Level 06 : ReaderT & Refactoring * Level 07 : ExceptT & Refactoring -- Coming Soon... * Level 08 : (Bonus Round) Lenses & Refactoring -- Unsure... * Level 09 : Add session controls (login, logout), so I can have some semblance of application state so I can add some property based tests? TODO: * Teacher notes/guide