Of course, one of the most common ways of structuring
large programs is to use a module system. But Haskell's
module system is quite simple and conventional. In essence,
it just provides mechanisms for namespace control, and there
is not even any standard notion of an interface or signature.
It does have one interesting feature in its support for
mutually recursive modules, which have proved to be quite
useful for programmers (but quite a headache for some
Haskell implementors!). Davide Ancona will say more about
such things later in this session.
So I don't think it would be interesting to say much more
about Haskell's module system in this talk. Instead, we
should ask what features make program structuring in Haskell
any different from program structuring in other languages?