[Photo of Thomas Hallgren, July 2016]

Thomas Hallgren

Email: thomas+h at altocumulus dot org



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.
WebFudgets (2017)
WebFudgets allow Haskell programs built with Fudgets (see below) to run in a web page. I have adapted some of the Fudgets programs from back in the day to WebFudgets.
The GF Cloud (2010-2016)
Some web applications based on GF, developed by me and other people.
The following "toys" were created while I was teaching the compiler construction course in 2001:
RegToy (January 2001, updated May 2019)
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.
Some older web applications:
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.)
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.

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 (1994)

This is a simple web browser. Since it fetched inlined images in parallel, it could display web pages faster than NCSA Mosaic (the dominant browser at the time). It is described in the chapter WWWBrowser - a WWW client of my PhD thesis.

wwwchecklinks (~1994)

This is a tool for web page authors. wwwchecklinks searches a document hierarchy and reports broken links. It also produces a cross reference list.

InternetLib (~1994)
A library containing the key components needed to build WWWBrowser, wwwchecklinks, Trams and other web-related software.

Some other software

Fudgets (1991-1996)
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.
Alfa (1996-2004)
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.
The Programatica Haskell front-end (2001-2006)
This is essentially a Haskell compiler front-end that I spent a lot of time working on as a PostDoc in the Programatica project.
An prototype operating system implemented in Haskell as part of the Programatica project, presented at the Haskell Symposium 2004 and at ICFP 2005.
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 successor of hbcmake. It has a graphical user interface and it can compile in parallell on several machines on a local network. Although I used it myself (e.g., to compile Alfa) I never considered it quite finished and so it has not been released to the public.
Reg (1999-)
A small tool that I created for my own personal use for manipulating registers (i.e. tables or relations as in relational databases) stored in text files. It can convert to and from various formats, e.g. CSV, TSV, Unix Mailbox, Unix password file, URL-encoded-queries, and even JSON.


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!