Go to the first, previous, next, last section, table of contents.

The Hello, World program

Let's start with a simple example, the `hello, world' program, which just prints out a string and exits. Using Haskell (version 1.3), the program looks like this:

module Main(main) where

--putStr :: String -> IO ()

main :: IO ()
main = 
 putStr "Hello, world!\n" >>
 return ()

The entry point to a Haskell program is main, an I/O action to execute. The above main consist of the action putStr, which just prints its argument string to standard output:

sof@marcus% ghc -fhaskell-1.3 hello.hs -o hello
sof@marcus% ./hello
Hello,world!
sof@marcus% 

To a create a graphical user interface version of hello, world, requires slightly more work, since we have to open up a window for the string to be displayed in. The Haggis versions looks like this

module Main(main) where

import Haggis

main =
 wopen ["*title: Hello"] 
       (label "Hello, World") >>
 return ()

Hello,World

The wopen action opens up a window containing a label displaying Hello, World. The label is one the user interface abstraction that comes with Haggis, displaying static text strings. Think of the wopen function as opening a new I/O virtual device in much the same manner as openFile opens a file device for reading or writing. Instead of specifying the device via a filename string, wopen uses a description of a user interface to open up a window containing an interactive, graphical virtual device. In our Hello, World example, the description of the virtual I/O device is simply a label.

The first argument to wopen is a list of style options, like the label to decorate the window with.


Go to the first, previous, next, last section, table of contents.