


ML for the Working Programmer, 2nd Edition
K**E
Excellent book
I was looking for a source on data structures and algorithms but from a functional data structures viewpoint. ML for the Working Programmer is exactly that. It's well written with intriguing examples and exercises. I wanted something to teach me ML so I could go through Okasaki's text Purely Functional Data Structures, but this book is a standalone source in its own right.
T**A
Wanted to understand OCaml functors
I have some experience with OCaml and was looking for additional resources to learn more about modules and functors. The author does a really good job showing how and why you would want to use functors, which was a mystery to me even after a few years of using the language. In general, I found 100% of the contents of this book applicable to OCaml in the year 2022, even though it concerns Standard ML and hails from the 90s. There are a few very minor differences, but they don't get in the way of trying examples and exercises.The book is full of simple and elegant code, and it helped me understand better how to write idiomatic ML.
K**H
A very Good book on ML and programming in general
ML is a very well designed programming language. And a direct consequence of this is that if you understand the principles behind its design, we get to really master the language. ML for the working programmer teaches you those principles.While mastery of ML is by itself a great deal, the examples provided and the expositions there of help you become better at functional programming in particular and programming in general. The third and fourth chapters were eye-opening for me in understanding the full power of lists and trees. The chapters that follow just go on to become even better.Do yourself a favor and invest your money and time in this extremely well written book.
D**S
A special, important, idiosyncratic book
I bought this book and simultaneously Elements of ML Programming, ML97 Edition (2nd Edition). This book, ML for the Working Programmer, is a pretty unique book. It strikes me as a very personal book. The author seems to be involved in theorem proving, which probably explains why a chapter is devoted to the subject and another chapter is devoted to implementing the lambda calculus. I wouldn't normally consider these things working programmers are interested in, but it's easy to cut Paulson some slack because he's an easy writer. While the tone is precise most of the time, the author just can't hold back a ripping joke or a snide remark every once in a while. It's a charming book.Of all the ML books I've seen (which is most of them) this seems to be the winner. I found Ullman's book a bit too compressed. For example, I wanted to see more material on the module system and functors; Paulson delivers, Ullman left me wanting. Ullman is very, "here's the syntax, here are the semantics." Paulson is much more, "here's three examples of what I am talking about, let's discuss the nuances." Both books spend a great deal of time discussing functional programming. I came into Standard ML from Haskell, so I found a lot of that material old hat, but again, I cut slack because these books are not new anymore but the language was fairly new when they were written. Functional programming techniques were very new and most people didn't have much exposure to them. If you are new to functional programming, I'm sure it won't disappoint.If you're setting out to learn Standard ML, I think this is a great book with more of a tutorial feel than Ullman's. Also more depth in some areas, like modules. Then again, I like concise books too; I wouldn't say Ullman's is a bad book, just not as good for my purposes.If you already know functional programming, you will probably want to skip a chapter or two. Particularly if you already know Haskell, you will probably find it very hard to get worked up over maps and folds. If your interest in ML is really an interest in the cutting edge of functional programming or type theory, this book is probably more of a historical curiosity, and you will probably get more out of something like Real World Haskell or Types and Programming Languages.If you're shopping for a programming language, let me say that Standard ML is a language with few proponents these days. But, unlike most languages that are not widely used, there are four or five well-known, stable and mature compilers and interpreters available for Standard ML, for free. Because it is so perfectly defined, it isn't going anywhere while you aren't looking. It's a safe investment. Also, it is easier to learn than Haskell. There's fewer syntax rules (albeit more ceremony), but it's more familiar and more regular, easier to learn. Also, the runtime semantics are less weird because it is not lazily evaluated. On the other hand, Haskell really seems to be going places these days. If you are being strictly practical or strictly theoretical, the investment in Haskell is more likely to pay dividends and I'd get Real World Haskell. But if you give it a shot, you may find yourself charmed by this ugly duckling of a language and its quirky caretakers.
K**N
the best!!
A great book, by the creator of the theorem provers Cambridge LCF and Isabelle/HOL.ML was a language created by Robin Milner who had the ingenious idea of building LCF in ML and using ML's type system to ensure that theorems proved in LCF will always be secure.This book explains programming in ML with an emphasis on building theorem provers, covering topics like lambda calculus.The last chapter explains the full implementation of a simple theorem prover similar to LCF. This is invaluable to those who'd like to understand LCF, HOL, Isabelle, HOL Light, etc.
M**E
Well written book
This is a very well written book for SML. If you're interested in OCAML or F# this is a good book to get because SML is the core of these languages.
I**T
Completely mistitled
This book is not bad; the explanation of all that it does explain is very good. It's just somewhat impractical, especially given the name; the title is a terrible misnomer for a book whose major example projects involve a lambda calculus evaluator and a proof assistant for first-order logic (not exactly the sort of thing "working" programmers usually have to do!). It does have some pretty solid demonstrations of how to implement various useful data structures and algorithms in SML (e.g. trees), but no "real-world" projects.The problem with this book is typical of the problem facing a lot of introductory material for many of the more academic languages-- they explain the theory behind the language very well and how the features work, but they don't really teach you how to organize programs in the language, stuff like what code to put in what file, when to use modules and functors, etc. If you cut your teeth in imperative OOP like I did, reading this book you might get to understand the features of this language, but without still being clear about how one would go about writing an actual program in it.Still, this is a book worth owning.
ترست بايلوت
منذ 5 أيام
منذ أسبوع