The Hello, world demonstrated how to use simple text labels in a user interface. More interestingly, let us instead try to make use of the graphical capabilities of the window system. In Haggis, graphical output is expressed using a data type called Picture, representing a two dimensional graphical object. For example
myCircle :: Picture myCircle = ellipse (20,20)
myCircle is a value representing a circle of radius 20 units, such that when the value is converted into actual drawing actions, something like this comes out:

The abstraction responsible for converting a Picture value into graphical output in a window is the Glyph. For example, to show myCircle:
main = wopen ["*title: Circle"] (glyph myCircle) >> return ()
The Glyph component is a fundamental Haggis abstraction, as it is used to convey almost all types of graphical output. The programmer manipulates and constructs values of type Picture, which the Glyph transform into a series of drawing operations. This value based representation of pictures relieves the programmer from having to think about the sequence of operations required to draw a picture, instead focussing on the description of the picture. Here's an example of a colourful spiral Picture:
noverlay :: [Picture] -> Picture
square :: Int -> Picture
centre :: Picture -> Picture
spiral :: Picture
spiral =
noverlay
[ withColour (hsl n 1.0 1.0) $
rotate n $
centre $
square (n `div` 3) | n <-[0,4..360]]
The spiral is a picture composed from a collection of rotated squares. The list comprehension generates the squares, starting from the very small, rotating them about their centre. The colour is specified using a value from the HSL (hue-saturation-lightness) colour space. To form the Picture for the spiral, the squares are then combined with the noverlay picture combinator, which overlays the Pictures
To use the Picture, we create a glyph displaying it:
main = wopen ["*title: Glyph"] (glyph spiral) >> return ()

The picture combinators and the Picture type used in this example is described further in See section Structured Graphics in Haskell.
Text is also part of the Picture type, and the label component used in the hello, world example is just an `instance' of the Glyph:
text :: String -> Picture label :: String -> Component (Label, DisplayHandle) label str = glyph (text str)