

Red-Black Trees in a Functional Setting (Okasaki, 1993) - paulgb
http://www.eecs.usma.edu/webs/people/okasaki/jfp99.ps

======
Xichekolas
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.

~~~
alexkay

      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...](http://www.amazon.com/Purely-Functional-Structures-
Chris-Okasaki/dp/0521631246/)

~~~
Xichekolas
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. ;)

------
leif
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...](http://www.cs.kent.ac.uk/people/staff/smk/redblack/Untyped.hs)
. 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.

~~~
kapuzineralex
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.

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

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

[http://matt.might.net/articles/implementation-of-
immutable-p...](http://matt.might.net/articles/implementation-of-immutable-
purely-functional-okasaki-red-black-tree-maps-in-scala/)

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

------
thirdstation
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.

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

