Assignment 3 Date
Part I March 5th (course week 7)
Part II March 12rd (course week 8)


This lab assignment will require you to read, understand, evaluate and extend an advanced Haskell code base. You will choose an existing Open Source library package (preferably from Hackage) and use it for a small project.

Part I

This part of the lab is just for you to choose a Haskell library and motivate your choice. You should start the next part before the deadline of this one.

First choose a package on Hackage which:

Then your task is to write a short report (1-2 pages) explaining why you chose this package, which learning outcomes you think it relates to, and how it relates to them. This report will be extended in Part II - Task 2. Also, write a preliminary description of what you intend to do for Part II - Task 1. Note that for larger libraries, it may be intractable to consider the whole library. If so, you may select some well defined part of the library. Troubles deciding on a package? Visit the package suggestion page.

Ideas 2017

We briefly describe some ideas of project that you might consider interesting. It is not mandatory to choose one of them.


Functional Reactive Programming

Digital Signal Processing




Part II

You will now work with the library you have chosen.

Task 1 - Writing code

In this part you will write Haskell code that uses or extends your chosen library. The code could be in any one of these categories (or possibly a mix of them):

The expected work load for assignment 3 (all parts together) is around 40 hours. Try to demonstrate that you master (some of) the learning outcomes of the AFP course. If you have questions, talk to the teaching assistants (Dan and Anton).

Task 2 - Documentation

Write a report about you have been doing in the lab. The report should include:

Use concepts you have learned in the course to express yourselves.

Clean code

Before you submit your code, Clean It Up! Submitting clean code is Really Important, and simply the polite thing to do. After you feel you are done, spend some time on cleaning your code; make it simpler, remove unnecessary things, etc. We will reject your solution if it is not clean. Clean code:


Your submission needs to include the following information:

Go to the Fire system!