Hacker News new | comments | show | ask | jobs | submit login
Functional Data Structures (uwaterloo.ca)
247 points by signa11 5 months ago | hide | past | web | favorite | 16 comments

The approach presented here was largely invented by Chris Osaki which isn't mentioned in that set of notes at least not in the first few pages. Here's a link to his dissertation which covers much of the same material. That plus more can be found in his book under the name Purely Functional Data Structures. https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

Okasaki is mentioned in the previous section.

Glad to hear it!

In case anyone wonders what a flanery is: https://cs.uwaterloo.ca/~plragde/flaneries/

That's not a very informative definition, and it's inaccurate. See https://en.wikipedia.org/wiki/Flâneur for the relevant idea.

ah yes the _classic_ ! i was kind of pleasantly surprised to see 'pragmatically' functional OCaml used for exposition, and thought of posting here for more insightful discussion :)

Purely functional data structures for OCaml, translated from Chris Okasaki's book "Purely Functional Data Structures":


Great to see OCaml featured here. Such a neat little language, combining functional programming with a healthy pragmatism in supporting imperative constructs with no fuss.

What tool is used to generate html books like this?

I know you found an exact answer, but I thought I’d give an alternative. You could do this or something similar with pandoc [1] and a make file. I tend to write my files in markdown run a makefile that concatenates them and converts them with pandoc to pdf, html, or docx.

[1]: http://pandoc.org

It's Scribble, Racket's documentation tool.

IMO every programming language should have a web templating tool for code to documentation generation.

IMO every programming language definition should also define how documentation strings are associated to syntactical constructs and how they can be accessed programmatically.

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