[Abqlispscheme] ICFP 2008

Daniel Lyons fusion at storytotell.org
Thu Jun 12 10:08:53 MDT 2008


On Jun 12, 2008, at 9:39 AM, Denis Bueno wrote:

> On Thu, Jun 12, 2008 at 11:29, Daniel Lyons <fusion at storytotell.org>  
> wrote:
>> languages if they are more amenable to the problem (using Haskell in
>> spite of itself last year made things suck.)
>
> I didn't participate last year, but I'm just curious:  what sucked
> about Haskell?


It's not really fair to lay all the blame on Haskell. The real problem  
was bad project management. We were using Haskell because we thought  
Haskell was cool. Haskell is cool, but only one team member was really  
fluent in it, and one other (me) could get by with it to some degree.  
The other two team members didn't know it at all and were planning on  
picking it up as the contest went on. You can guess how well that  
worked out.

Now, the problem itself seemed to us to dictate a mutable data  
structure and the algorithm seemed to require non-local return. If you  
know Haskell, you see those two requirements and hear two monads. We  
probably could have factored it into a manual continuation-passing  
style, but we weren't clever enough for that, so we wound up trying to  
nest the two monads, in other words, using a monad transformer. Monad  
transformers were new to the team member who knew Haskell and  
definitely beyond my comprehension at that time. So we wound up with  
extremely complex Haskell code only one of us really could understand.  
I bit my tongue, thinking it would have been a lot easier and prettier  
in OCaml where those two requirements would not have posed a problem.  
I even wrote a rope data structure for OCaml after the contest  
(someone else made a nicer one and released it publicly).

However, many of the teams that did well at ICFP last year noticed  
that the problem had to do with drawing images and that the organizers  
probably put clues into the act of drawing itself. So they built GUI  
applications which let them step through the drawing functions and  
watch them happen. This probably would have helped us debug our  
drawing routines, which were broken through the whole contest, but the  
organizers had in fact left clues: the code would draw hints on the  
image and then erase them so that if you had a process that just did  
all of the drawing at once and output a single image at the end, as  
ours did, you weren't able to get the clues to advance.

I don't consider Haskell to be a very good language for GUI  
programming right now, though I guess it's fine if you're on Windows  
or using GTK+. I'm not sure Lisp would have fared any better on that  
front though.

I probably place more blame on Haskell than I should. But I definitely  
felt after the contest that Haskell had made a complex problem more  
complex rather than simpler.

On the other hand it seemed to me like last years contest results were  
much more stratified than the previous year's. It seemed that there  
was a chunk of 50ish teams at the top who had made varying progress,  
then about 130 teams that made the basics work but made no real  
progress (my team, Functional Healing, was in that set) and then the  
remaining 600 or so teams that didn't even get that far. The spread  
was a lot better on the Umix challenge.

Also, last year's challenge didn't seem to benefit from having  
multiple team members as much, but that may just be that they  
underestimated the difficulty of getting through the first barrier.  
Comparing anything to the Umix contest isn't really fair though; that  
was really a revelation and one of the most rewarding things I've ever  
been a part of.

-- 
Daniel Lyons
http://www.storytotell.org -- Tell It!





More information about the Abqlispscheme mailing list