Hacker News new | past | comments | ask | show | jobs | submit login
Red-Black Trees in a Functional Setting (Okasaki, 1993) (usma.edu)
31 points by paulgb on March 16, 2010 | hide | past | favorite | 10 comments



If you haven't read Okasaki's dissertation:

http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

I'd highly recommend it. It's hard to find a dissertation that reads like a novel, but he somehow managed to accomplish such a feat.


  It's hard to find a dissertation that reads like a novel
That's why he turned it into a book: http://www.amazon.com/Purely-Functional-Structures-Chris-Oka...


Good point. Judging from the table of contents, he added a chapter up front on various types of trees, tacked on Haskell source in the appendix, and mushed all the conclusions together.

But I'm a poor grad student, so I'll read the free dissertation over the $75 book. ;)


This is probably the best explanation of Red-Black trees, even outside of a functional setting.

There is an implementation that is pretty faithful to Okasaki's paper here: http://www.cs.kent.ac.uk/people/staff/smk/redblack/Untyped.h... . I used as a reference once because it also implements delete.

In the same directory, Kahrs develops other versions with stronger constraints coming from the type system, but I never got far enough in to Haskell back then to understand them.


I find it particularly interesting that he breaks down the number of neccessary cases to only 4 compared to the standard explanation found everywhere else.


Yes, that's the power of purity. On the syntax side, or-patterns express those remaining four cases very succinctly.


In case anyone needs them, I wrote up Okasaki red-black trees for Scala:

http://matt.might.net/articles/implementation-of-immutable-p...


Well, thanks, I was just about to take Okasaki's paper and see what an implementation in Scala would look like.


I took his Programming Languages and Translators class when he was at Columbia. It was, hands-down, the best class I've ever taken. His enthusiasm for the subject was evident. The aspect about the class I liked best, and which I try to emulate, it that he rarely ever directly answered a question. He would, with incredible patience, ask you questions in-turn to help lead you to the solution or definition. I always found that impressive from a graduate-level professor.

I think I still have his ML implementation of Red-Black trees he gave the class.


bst were the first time i went "holy crap. i love complex problem solving"




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: