How should you structure your Haskell program? Some recommend a stack of monad transformers, either in the mtl style or in the transformers style, others recommend free monads, or why not functional reactive programming or combinator libraries? Samuel's opinion is that you should use... all of them :)
After a brief reminder of each of the various architectural styles above, Samuel will give you a tour of a small chat client he implemented in a way which combines all of those styles. He will explain why you don't need to stick to a single style, how and where to transition between two styles, and most importantly, he will give concrete examples in which each style has an advantage over the others.
[note that we will try to begin the presentation at 7pm sharp this time]