# Functional Specification of the JPEG algorithm

### Reference

Jeroen Fokker,
**Functional Specification of the JPEG algorithm,
and an Implementation for Free.**

In: *Programming Paradigms in Graphics*,
Proceedings of the Eurographics workshop
in Maastricht, the Netherlands, september 1995.
(R.C. Veltkamp and E.H.Blake, eds).
Wien, Springer 1995, pp. 102-120.
### Abstract

A decoder for images compressed by the JPEG algorithm
is stated in the pure functional programming language Gofer.
The program can be regarded as a mathematical specification
of the decompression algorithm; the concise description
(which is included in full) is very suitable for learning
about the algorithm. At the same time the `specification'
is an executable program, which shows the usefulness of a
functional programming language as a prototyping tool for
graphics algorithms.
All functions are defined as much as possible at the
function level, i.e. as compositions of other functions.
A tutorial on the important concept of a `State Monad', which
plays an important role in the program, is included.
From a functional programming theoretical point of view,
the new technique of currying a state monad, which is introduced,
and its application in the program, are interesting.
### Article text

Article
Program source (Gofer) (15k)
### Other relevant links