This tutorial presents Haggis, a graphical user interface framework written in the lazy functional language Haskell. The Haggis framework provides the programmer with a compositional view of graphical user interfaces, where complete GUI applications can be built by repeatedly composing together parts. The individual user interface components are treated as virtual I/O devices that can be interacted with by the application just as files and other normal devices can. A key ingredient of Haggis is the use of concurrency to provide its compositional view of GUIs.