Over the past few years, ML has emerged as one of the most important members of the family of programming languages. Many professors in the United States and other countries use ML to teach courses on the principles of programming and on programming languages. In addition, ML has emerged as a natural language for software engineering courses because it provides the most sophisticated and expressive module system currently available.Felleisen and Friedman are well known for gently introducing readers to difficult ideas. The Little MLer is an introduction to thinking about programming and the ML programming language. The authors introduce those new to programming, as well as those experienced in other programming languages, to the principles of types, computation, and program construction. Most important, they help the reader to think recursively with types about programs.
Made it almost all the way through (all but the last half of the last chapter). I'll come back after I read Types and Programming languages.
Like the rest of "The Little X" series, it's more of a brain-stretching exercise than something that will teach you a language, or even anything practical. If you just treat it as a fun romp to expand your mind you'll enjoy it.
The little MLer is another in Daniel Friedman and his collaborator's series in teaching both (functional) programming languages and essential aspects of computation. This book, as with the previous entries, uses a whimsical mix of Socratic dialogues, playful (and foody!) examples and delightful animal cartoons to teach standard ML. One should not, however, mistake levity for unseriousness, as the tail end of this book makes perfectly clear!
The first 8 chapters are a fun and engaging look into both the syntax of Standard ML and into a new way of thinking about programming. Using the, now familiar, mix of algebraic data types, pattern matching and pure functions we get a whistle stop tour of everything from the natural numbers to S-expressions, into how to perform common tasks with recursion and how to use types to direct our thinking.
The last two chapters cover standard ML's lightweight exception system and its module system. Exceptions will bring to mind Scheme's continuation mechanisms. Modules on the other hand, provide us with perhaps the most fully-formed approach to type abstraction of any programming language, even today. Whilst neither chapter is systematic enough to understand everything there is to know about such complicated features of ML they are both a fine start for the uninitiated and give much food for thought.
Overall, these books leave the reader with a pleasant few hours spent in the company of expert programmers and educators. In many respects, the lasting legacy of that time lies not in the particular content conveyed but in its pedagogical methods and philosophical outlook - the idea that learning might be a dialogue between teacher and student and that examples needn't be based in dull-spirited business jargon.