[Photo of Thomas Hallgren, July 2016]

Thomas Hallgren

Email:last name at chalmers dot se
Office:EDIT building, room 6105


Ohloh profile for Thomas Hallgren 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 and large.

Web applications

I mention some web application first, since it is so easy for you to try them out.
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 Västtrafik.)
PMG reference database search (1998)
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.
The following "toys" were created while I was teaching the compiler construction course in 2001:
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 nhcmake, supplied with NHC, and later hmake, a more compiler independent version of nhcmake.
A GUI toolkit for Haskell, which Magnus Carlsson 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. Agda and 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 Haskell, and only rarely resort to C or Shell scripts.

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!