Assignment 3 - Variant 1: public Haskell library

See also Variant 2 (Agda).

Description

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.

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.

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.

Submission

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:

What to submit

Your submission needs to include the following information:

Where to submit

On the Canvas course page.