top | item 46156646

(no title)

nanomonkey | 2 months ago

I've been looking for the same for scheme and clojure. Here are a few I've found:

Functional Data Structures and Algorithms, A Proof Assistant Approach by Tobias Nipkow (Ed.) [https://fdsa-book.net/functional_data_structures_algorithms....]

Purely Functional Data Structures thesis by Chris Okasaki [https://www.cs.cmu.edu/~rwh/students/okasaki.pdf]

https://en.wikipedia.org/wiki/Purely_functional_data_structu...

discuss

order

zelphirkalt|2 months ago

[1] are the exercises with solutions (!) of a lecture [2] at ETH Zurich, which include AVL trees in Isabel. The whole list of exercise PDFs is at [3]. I started porting the AVL trees to Scheme [4], but lately have not worked more on this. I also try to make it easy to understand the implementation by providing explanatory comments.

[1]: https://archiv.infsec.ethz.ch/education/permanent/csmr/exerc...

[2]: https://archiv.infsec.ethz.ch/education/permanent/csmr.html

[3]: https://archiv.infsec.ethz.ch/education/permanent/csmr/exerc...

[4]: https://codeberg.org/ZelphirKaltstahl/guile-data-structures/...

KPGv2|2 months ago

Okasaki's is basically the Bible for this stuff. Anyone writing data structure libraries in a functional language will have read this or have it on their to-read list.

zelphirkalt|2 months ago

I have the book, but it also doesn't contain that many data structures. Some of the maybe most used (AVL tree?) are not in there.

Not all exercises have solutions. I get stuck on some exercise and have a hard time finding solutions to them, that I can compare with my implementations in Scheme. Not being a Haskell user (yet), I also have some issues translating Haskell to Scheme. In languages like Haskell one often controls flow by pattern matching on type. In Scheme one needs to make structures or records explicitly and use their predicates to explicitly check the type. It's all possible, but not exactly great for learning. Sort of the road has many sticks and stones to stumble.