2017-08-24 09:06:48 +03:00
|
|
|
## Advanced FP Course
|
2017-08-07 06:21:51 +03:00
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
### You:
|
2017-08-07 06:21:51 +03:00
|
|
|
|
|
|
|
* 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
|
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
### We:
|
2017-08-07 06:21:51 +03:00
|
|
|
|
|
|
|
* 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
|
2017-08-07 09:23:32 +03:00
|
|
|
- Encoding / Decoding messages (JSON & Binary)
|
2017-08-07 06:21:51 +03:00
|
|
|
- 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
|
|
|
|
|
2017-08-09 06:06:21 +03:00
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
### Course Sequence:
|
2017-08-09 06:06:21 +03:00
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
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.
|
2017-08-17 09:48:54 +03:00
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
NB : No doctests yet :(
|
2017-08-09 06:06:21 +03:00
|
|
|
|
2017-08-10 09:25:08 +03:00
|
|
|
* Level 01 : Simple Hello World web app.
|
|
|
|
* Level 02 : Define our application spec with types!
|
|
|
|
* Level 03 : Add some flexible configuration
|
2017-08-11 08:54:21 +03:00
|
|
|
* Level 04 : Testing & Tools (hspec & ghcid)
|
2017-08-18 09:14:54 +03:00
|
|
|
* Level 05 : Database layer (sqlite-simple)
|
2017-08-10 09:25:08 +03:00
|
|
|
* Level 06 : ReaderT & Refactoring
|
|
|
|
* Level 07 : ExceptT & Refactoring
|
2017-08-17 09:48:54 +03:00
|
|
|
|
2017-08-24 09:06:48 +03:00
|
|
|
-- Coming Soon...
|
2017-08-10 09:25:08 +03:00
|
|
|
* Level 08 : (Bonus Round) Lenses & Refactoring
|
|
|
|
|
2017-08-17 09:48:54 +03:00
|
|
|
-- Unsure...
|
2017-08-18 09:14:54 +03:00
|
|
|
* Level 09 : Add session controls (login, logout), so I can have some semblance
|
|
|
|
of application state so I can add some property based tests?
|
2017-08-17 09:48:54 +03:00
|
|
|
|
|
|
|
TODO:
|
|
|
|
* Teacher notes/guide
|
2017-08-08 02:45:19 +03:00
|
|
|
|