AFP Assignment 2

Pedro Vasconcelos, DCC/FCUP

April 2021

Guidelines

Objective

Structure of the report

  1. Title, author, context (year, course, etc.)
  2. Summary
  3. Introduction / motivation
  4. Development / examples
  5. Conclusion
  6. Bibliography

These as just sugestions, you may alter the structure if convenient.

Assement

Report:

Presentation:

Plagarism

Copying uncited text from articles, internet, etc. will lead to the disqualification of all assignments.

Themes

Data structures and algorithms

  1. Hash-based containers
  2. Vectors
  3. Graph algorithms
  4. Heaps (aka Priority queues)

Data formats and conversions

  1. Pretty-printing
  2. Attoparsec
  3. Aeson
  4. Pandoc

Testing

  1. SmallCheck, Lazy SmallCheck
  2. Hedgehog
  3. Doctest

Streaming

  1. Conduit
  2. Pipes


See also the talk “Lazy I/O and Alternatives in Haskell”:

https://skillsmatter.com/skillscasts/4230-lazy-io-and-alternatives-in-haskell

Databases

Sqlite-simple

http://hackage.haskell.org/package/sqlite-simple


(There are other alternatives; this is the simplest.)

Interfaces and frontend

  1. The Elm language
  2. Functional reactive programming

Web backend

Scotty

https://hackage.haskell.org/package/scotty


(There are other alternatives; this is the simplest.)

Concurrent and parallel programming

  1. Evaluation strategies
  2. Software transactional memory
  3. Repa (Regular Parallel Arrays)

Types

  1. Linear types
  2. Dependent types

Functional Pearls

  1. “Functional Pearl: The Zipper”, G. Huet, 1997 PDF
  2. “Probabilistic functional programming in Haskell”, M. Erwig and S. Kollmansberger, 2006 PDF
  3. “When Maybe is not good enough”, M. Spivey, 2012. PDF

  4. “Composing contracts: an adventure in financial engineering”, S. Peyton Jones, J-M. Eber, J. Seward. PDF

  5. “Two Can Keep a Secret, If One of Them Uses Haskell”, A. Russo. PDF