Purely Functional Data Structures
C**M
A timeless classic; will never be irrelevant
Okasaki's book on purely functional data structures is a timeless classic.Every programmer -- functional or otherwise -- should have a copy at arm's length.This book remains the best resource available on implementing performant purely functional versions of well-known data structures -- the kind of data structures that everyday programmers need to get their jobs done.It would be one thing to only aim for coverage of the space, but Okasaki goes much further by demanding that every algorithm he presents be as elegant as possible.That insistence on elegance really pays off for the reader: the algorithms are easy to understand and easy to implement in the language of your choice.To the delight of the reader, in many cases, the functional versions of these data structures end up much easier to implement and understand than their more well-known imperative versions.
M**M
Great book for computational scientists
Admittedly this is an odd recommendation especially for a section on computational math. That said, functional programming is a much more natural paradigm in scientific code vs systems code. After I read this book I finally understood how Spark works and have since been able to enjoy reading short and powerful Haskell code for science. An amazing example is Automatic Differentiation in Haskell
S**N
Good but Standard ML is hard to read
This book is really good. It discusses its data structures on a level that I'm quite happy with with plenty of detail and discussion about each one.The only problem I had with the book is the use of standard ML. I know it's a thing of personal preference, but I found standard ML to be much harder to read than Scala or Haskell as is usually used in other books. There IS a Haskell section in the back which I found myself flipping forward to many and it got repetitive. It also hurts the readability since the code in the back is full data structure implementation, not the specific examples highlighted in the chapter.
A**Y
Wisdom for advanced programmers
In the pantheon of knowledge there are increasing levels of value; data, information, knowledge and wisdom. Okasaki's "Purely Functional Data Structures" firmly fits into the latter category. The book provides a relatively complete survey of all the academic literature on the topic and presents it in a way that is understandable to an advanced programmer.If you are an advanced programmer, i.e. you have significant experience with a procedural or OO language and some experience with a functional programming language, then this book may be for you. If you have experienced issues in synchronising access to data structures in multi-threaded environments or ensuring transactional access to complex data, then this book contains the wisdom you seek.
T**O
Every software developer should read this
Even if you don't plan to do functional programming, it will make you a better programmer to think about recursive / immutable data structures outlined in this book. Aside from improving you as a programmer, it's just intellectually stimulating to see this elegant ways of expressing the structures, especially if you first learned imperative / stateful data structures. This is not an introductory book, however.
D**S
The Design Patterns of FP
I'm not going to lie; I didn't make it through the second 2/3rds of this book. But that first third did more for my understanding of functional programming than the rest of my FP library did combined. This book seems to me to be the functional programming answer to Design Patterns. It's worth having on your shelf if you have any interest in functional programming, ML, or Haskell.
C**G
Probably my favorite CS book of all time
This is not the kind of book in which you could find techniques applicable to day-to-day work, but it definitely is a worth reading mind-opener; it's fascinating to see efficiency could still be preserved while being purely functional!
C**E
Haskell speakers may be daunted.
Despite the editorial description of the book, the book is really about Standard ML. It happens to have an appendix where source code has been translated -- out of order, and without reference to the text -- into Haskell. This makes it very difficult to read through the book without speaking Standard ML.The exercises, also, are only SML. Several appear to use idiosyncratic SML features -- I say "appear" because no answers to the exercises, even the basic ones, are provided for me to check my understanding.Essentially, the content is good, but expect to learn Standard ML to really get the most out of this book.
P**O
An eye opener. A must for any functional programmer ...
An eye opener. A must for any functional programmer. You just cannot continue using your typical book of algorithms for imperative "mutating" data structures.
P**R
Absolutes Must-Read
Für alle, die in der funktionalen Programmierung zu Hause sind, oder werden wollen, eine Pflichtlektüre. Zugegeben, etwas Neigung zur Theorie ist nötig, aber Okasaki erklärt ausreichend ausführlich. Die Vorgestellten Datenstrukturen sind teils überraschend pfiffig und die Implementierung in ML gut nachvollziehbar.
B**K
Un bon livre
Tous les exemples sont en ML (même s'il y a la traduction de certains en Haskell), donc c'est assez compliqué au début.Les exemples sont bien traités et raffinés, optimisés, etc.Ce livre est donc à mi-chemin entre un livre de cuisine, qui fournit les codes "tout fait" (modulo le langage) et un livre de méthodes qui nous apprends à les réaliser.Dernier point noir, ce sont des algorithmes/problème assez exotiques qui sont traités.
J**P
Wonderful
This book is a superb introduction to the subject of purely functional data structures. Many different data structures and implementations of them are described and each is walked through in detail with a thorough description of the advantages and disadvantages. More importantly, this book contains pragmatic advice based upon existing implementations which is invaluable for real programmers.The only downsides are that some good advice is buried deep in the book and not presented in an overview or executive summary, and the book uses SML rather than OCaml or F#. However, Markus Mottl has translated the code into OCaml.
A**V
A real treasure if you are ready to give it the time it deserves
A detailed, well-paced textbook on functional data structures. Do not make a mistake thinking that it's an introduction book — it's not. It is an extended version of Okasaki's PhD thesis and should be treated as such.Make sure to get through the exercises: these do hide plenty of insights not available otherwise. A key will not help here: some ideas are better delivered through first-hand experience, and there are no shortcuts.
Trustpilot
1 day ago
5 days ago