Advanced Functional Programming (Dr Yusuf Motara)
This module assumes familiarity with the basics of functional programming and expands both breadth and depth of knowledge. There is a strong focus on practicality and applicability, and on using theory to develop robust, error-free programs with a minimum of time and effort. The module goes into depth around programming patterns and techniques, including common monads, embedded domain-specific languages, equational reasoning, and interesting research tracks. Students are also introduced to a range of functional languages and their applications.
Topics covered include:
- Continuation-passing style
- Common patterns (e.g. state, reader, writer monads; lenses, prisms)
- Domain-specific languages
- Computation expressions
- Equational reasoning
- Untyped functional programming
- Lisp-style macros
- Functional within dysfunctional: Elm and Nix
Prerequisites: Familiarity with a typed functional programming language (e.g. Haskell, F#, Scala, etc.) and the principles underlying functional programming practice (immutability, first-class functions).
Last Modified: Wed, 26 Jul 2023 15:05:15 SAST