Exercise Sheet 1 [task sheet]
- Sums
- Digit sums
- Prefixes
- Guards vs. If
- Laziness
- Completing prefixes*
Exercise Sheet 2 [task sheet]
- Modelling the basics of a casino
- Text alignments
- Safe calculations
- The simplest enumeration type
- Hiding values
- Mixed lists*
Exercise Sheet 3 [task sheet]
- Splitting Lists
- Sorting
- Components and Products
- Polymorphism Quirks
- Sets*
Exercise Sheet 4 [task sheet]
- map, foldl, foldr, filter
- Underscores, Types
- Streams and higher order functions
- Advanced folding and filtering
- Function family and stream of streams*
Exercise Sheet 5 [task sheet]
- Comprehensible Streams
- The Functor class and its limits
- The Functor class and its limits continued
- Folding
- Functor Functor and Foldable Foldable
- Not enough Folding and Mapping: Functor3 and Foldable3*
Exercise Sheet 6 [task sheet]
- Keeping things sorted
- Deques, Module 'Deque'
- Deques as Stacks/Queues, Modules 'MyStack', 'MyQueue', 'Deque'
- Vectors, Module 'MyVector'
- Maps and a very clunky TicTacToe*, Module 'TicTacToe'
Exercise Sheet 7 [task sheet]
- Deque axioms, Module 'Deque'
- More axioms: Sorted List, Module 'SortedList'
- Trace
- Tasty
- Axiom puzzle*
Exercise Sheet 8 [task sheet]
- To do or not to do
- Better arbitrary for sorted list
- Arbitrary generator for distinct pairs
- File manipulation
- Rolling Dice*, Module 'DiceRoller'
Exercise Sheet 9 [task sheet]
- ID and a Monad for counting binds
- making Bingos I
- making Bingos II
- The state of Ants*