Writing computer programs is something I like to do, and I do it both
in my work and as a hobby. Below, I mention some of them, both small
I mention some web application first, since it is so easy for you to
try them out.
The following "toys" were created while I was teaching the
compiler construction course
- Webster's English Dictionary (~1995)
- A rather small program, part shell scripts, part C.
- Klockan (~1995)
- Tells what time it is, in Swedish. A small C program.
- Trams (~1996-2000)
- A complete, stand-alone, special-purpose
web server for searching for travel routes in the Göteborg
public transport system, implemented in Haskell.
(Such a web service did not
exist when I wrote it. Nowadays, you can use similar official
services provided by
- PMG reference database
- This is a
server that lets you search a reference database maintained by
the people at the
department. Another Haskell program, using the same
underlying HTTP server as Trams.
- RegToy (January 2001)
- A web interface to a small Haskell program that converts regular
expressions to finite automata.
- LRToy (January 2001)
- A web interface to a small Haskell program that generates LR
parsing tables for BNF grammars.
- FlowToy (February 2001)
- A web interface to a small Haskell program that performs some
simple dataflow analysis of programs in an intermediate language.
Other web-related software
Being a dedicated functional programmer, I have done some
experiments with writing web software in the functional language Haskell:
- WWWBrowser - a web browser
This is a simple web browser,
and is probably the most serious-web related program I have
written. It is described in the chapter
WWWBrowser - a WWW
client of my PhD thesis.
This is a tool for web page authors.
wwwchecklinks searches a document
hierarchy and reports broken links.
It also produces a cross reference list.
Some other software
- An automatic make tool supplied with
hbc, written in LML. It has
served as the starting point for
supplied with NHC,
a more compiler independent version of
- A GUI toolkit for Haskell, which
and I implemented, mostly during 1991-1995, but I
still make some additions and improvements now and then.
We have also implemented some games and other
small programs using Fudgets. For some examples, see
the Fudgets demos page.
- A successor of
hbcmake. It has a graphical user
interface and it can compile in parallell on several machines on
a local network. Although I use it myself (e.g., to compile
Alfa) I never considered it quite finished and so it has not
been released to the public.
- A proof assistant with a graphical user interface, implemented
in Haskell using Fudgets. My work on Alfa mostly concerns the
graphical user interface and plugging everything together.
GF are used in Alfa.
I bought my first computer when I was 15 years old, and since then I
have enjoyed writing programs of various kinds. The programming languages I
used in the beginning were mostly BASIC and 6502 assembler. As an
undergraduate student at Chalmers University I
was introduced to functional programming and was fascinated, but I continued to
write most of my programs in C until I was introduced to the Lazy ML compiler
as a PhD student.
Nowadays, I write most of my programs in
and occationally resort to C and Shell scripts when it seems appropriate.
Comparing programming languages is fun. My favourite web page on this
topic is 99
Bottles of Beer on the Wall. This page shows the same programming
example in hundreds of diffrent languages!