1999 ICFP Programming Contest

The contest is over, and the Judges have tabulated preliminary results.

Final results will be made public at the awards presentations, at ICFP on Tuesday, September 28, at 12:14 PM local (French) time, and not before. The results will be posted to the web site sometime thereafter.

The contest

Convinced your favorite functional programming language provides unbeatable productivity? Do functional languages lead to better and faster programs? Perhaps it's just the case that functional programming languages attract better programmers than other languages... and you and your friends are the best of the best.

If so, we've provided you the opportunity to prove it! We are pleased to announce the 1999 ICFP Programming Contest to be held in conjunction with ICFP'99. All programmers are invited to enter the contest, either individually or in teams; we especially encourage students to enter.

We've designed the programming contest for direct, head-to-head comparison of language technology and programming skill. We have a range of prizes for the winners: cash awards, famous texts on functional languages donated and autographed by the authors, and, of course, unlimited bragging rights.

We hope to repeat the smashing success of the first ICFP programming contest held just last year.

Team composition

Players may enter alone or as a team. Teams may be of any size -- but we'll offer the friendly advice that the organizational overhead of having more than three or four members on a team will tend to be self-limiting. Anyone is eligible to enter (even faculty!), except the Judges. We especially encourage students to enter the contest. (We even have special prizes reserved for possible student winners; see below.)

Contest Overview

On Thursday, September 2 at 5PM EDT a challenge task will be posted on the Internet. Teams will have 72 hours to implement a program to perform this task and submit this program to the contest judges. New this year, there will also be a special lightning division for those who have only 24 hours to spend on the contest.

Although the precise task chosen will not be revealed until the contest begins, algorithmic cleverness matters. Performance may matter. Programming languages that help programmers to build complex systems quickly may allow contestants to attempt particularly sophisticated implementations in the 72 hours allotted for programming.

This programming contest is being conducted by ICFP, which implies a context of functional programming. However, rather than debate the definition of a "functional programming language," we will allow submitted programs to be written in any language whatsoever, as long as it has an implementation for Pentium PCs running Linux. Mixing languages is entirely acceptable; perhaps you will use the new H/Direct tool to create the ultimate mix of Haskell and C++.


The ICFP'99 general chair has generously authorised a range of prizes to reward and recognise the contest winners: money, wisdom, and peer recognition.

Monetary prizes are listed and will be awarded in French Francs. Due to fluctuations in exchange rates over time, the US dollar equivalents given below are only approximate. To get an exact conversion from French Francs to US dollars, or any other currency, visit the The Universal Currency Converter.

First Prize

The team winning first prize in the competition will be awarded

Second Prize

The team winning second prize in the competition will be awarded

Judge's Prize

Finally, the Judges' Prize is to be awarded, not on the basis of the competition, but solely at the whim and discretion of the judges. Novel algorithms, interesting languages, beautiful code, arresting user interfaces, use of parallelism -- these things may well count for something in the judges' eyes.

The team winning the Judges' Prize will be awarded

Prize books

At present, we are collecting books on functional programming to be given as prizes for the contest. We would like these books to be autographed by their author(s). Donations will be greatly appreciated.


Contest entrants will have exactly 3 days, from Thursday, September 2 beginning at 5:00 PM through Sunday, September 5 at 5:00 PM Eastern Time [2:00 PM Pacific Time, 21:00 UTC], to complete the contest task. ("Lightning" entrants will have 1 day, until Friday, September 4 at 5:00 PM EDT [21:00 UTC].) The task description will be linked to this web page, e-mailed to all registered contestants, and posted to a set of relevant newsgroups.

Contestants may submit implementations using a submission form. No submissions will be accepted after 5:00 PM EDT Sunday. You may, however, submit multiple times; the judges will use the last submission received before the contest deadline.

You may also submit a test program any time before the contest begins to make sure everything works as you expect.

What if your team has more than one good idea? We will consider multiple entries from the same team provided that the judges consider those entries to be significantly different. The judges are likely to consider use of a different algorithm or a different language to be significantly different. The judges are unlikely to consider small variations, e.g., changed heuristics for alpha-beta search, to be significantly different. Should the judges decide two entries are not sufficiently different for both to be considered, they will consult with the team to decide which should be officially entered. The judges' decisions about significant differences are final.


We have a form that you may use to register for the contest. It is not strictly necessary to register in advance. However, it helps the contest organizers plan the event, and by registering the email addresses of your team members, you ensure that we can email the task description directly to your team with zero delay when the contest starts.

Good luck & have fun!

Got a question? Check the FAQ!
Norman Ramsey | Kevin Scott | icfp99@cs.virginia.edu