Past exams
Exams by Andreas Abel
June 2025 (with solutions): Probability monad with monad laws and example application
March 2025 (with solutions and grading info): EDSL for boxy layout | Monad for computation cost accounting
August 2024 (with solutions): Monad and monad transformer for errors and warnings | Interpreter for arithmetical expressions
March 2024 (with solutions): Non-determinism monad | EDSL for category with finite products
Exams by Alejandro Russo
March 2023 (with solutions): Free monad
March 2022 (with solutions): Non-determinism monad
March 2019 (with solutions): State+exception |
sumlen
|foldr ⊕ ≡ foldl ⊕
|HList
|MAC
March 2018 (with solutions): Eta | State monad laws |
eval
Hutton's razor | Type-levelNat
August 2017 (with solutions): Phantom types | Functors | Misc (alt.
Monad
; notFunctor
; notApplicative
)March 2017 (with solutions):
Applicative
| IndexedExp
,Serialised
|MAC
March 2016 (with solutions):
Functor
leaf-labelled tree | Alt.Monad
|MAC
Exams by Patrik Jansson
August 2014 (solutions): Design DSL for boxy framed layout with laws, deep and shallow embedding | Complete QuickCheck suite for
qsort
| GADT forExpr
with lists, evaluation w/ and w/o environmentMarch 2014 (solutions): Monad via
join
|join
laws for writer monad | DSL for circuits with delayAugust 2013 (solutions): DSL: QuickCheck's
Gen
| UnderstandWriterT IO
directory listing | Parser lawsMarch 2013 (solutions): Properties of
sort
| DSL for symbolic arithmetic expressions | Understand generalized triesAugust 2012 (solutions): DSL for shapes |
Functor
for +, ×, → |ListT
monad transformerMarch 2012 (solutions): DSL for state monad | DSL for pretty printer |
Vec
andFin
with type-level natsAugust 2011 (solutions): QuickCheck
sort
, list induction | DSL for date sets | UnderstandMaybeT Writer
March 2011 (solutions): Difference lists w/ laws | Parallelism | Parser DSL embedded as GADT
August 2010 (solutions): DSL and monad for 1-cell calculator | Extending typed expression language:
eval
,infer
March 2010 (solutions): DSL for
Vector
(finite lists) |Monad
product |ExceptT
+StateT
(2 ways)
Exams by Ulf Norell
- March 2009
(solutions):
DSL for ant in maze |
Writer
monad | Well-typed expressions: inferVar
,Let
| evalApp
(higher types) | locking usingstm
A take-home exam
- March 2008
(solutions)"
GameMonad
counting lives |Doc
DSL for pretty printing
More exams?
The list above will give you a pretty good idea what to expect from an exam. Of course, the course has been run by different teachers and each of them has its own style. If you still want more exams, you can get a copy of them from the Studieexpedition.