'… a novel and intuitively appealing approach to teaching functional programming … could profitably be used for an advanced undergraduate course focusing on domain-specific languages in this area.' Journal of Functional Programming
1. Problem solving, programming and calculation; 2. A module of shapes: part I; 3. Simple graphics; 4. Shapes II: drawing shapes; 5. Polymorphic and higher-order functions; 6. Shapes III: perimeters of shapes; 7. Trees; 8. A module of regions; 9. More about higher-order functions; 10. Drawing regions; 11. Proof by induction; 12. Qualified types; 13. A module of simple animations; 14. Programming with streams; 15. A module of reactive animations; 16. Communicating with the outside world; 17. Rendering reactive animations; 18. Higher-order types; 19. An imperative robot language; 20. Functional music composition; 21. Algebraic properties of multimedia; 22. Interpreting functional music; 23. A tour of the prelude list module; 24. A Tour of Haskell's standard type classes.