Showing posts with label functional programming. Show all posts
Showing posts with label functional programming. Show all posts

Purely Functional Data Structures Review

Purely Functional Data Structures
Average Reviews:

(More customer reviews)
Okasaki's slim volume is one of the best expositions on implementing data structures & algorithms in a functional language. After taking an introductory course on functional programming, this would be the book which tells you where to go next.
This book doesn't just present a rehash/rewrite of imperative data structures, only written in a functional language. Instead, Okasaki makes sure to emphasize benefits which only functional programming can bring to the table. For example, many functional data structures can compactly represent not just their current state, but all of their past states as well--a feature called "Persistence". Also, functional newbie programmers might be wondering why lazy vs. strict programming is a big deal, and Okasaki shows clearly where data structures can benefit from either being lazy or being strict.
For the advanced reader, Okasaki also presents several powerful techniques for analyzing the runtime of algorithms, including the so-called "Banker's Method" and the "Physicist's Method" for analyzing amortized algorithms.
I hope that Okasaki comes out with a 2nd edition of this book; there is one missing piece in particular which I really wish he would have included: Although he presents an EXTREMELY lucid description of how to implement Red-Black trees in a functional language, he only presented algorithms for insertion and querying. Of course, deletion from a red-black tree is the hardest part, left here, I suppose, as an exercise to the student. If you want to supply this missing piece yourself, check out a paper by Stefan Kars, "Red-black trees with types", J. Functional Programming 11(4):425-432, July, 2001. It presents deletion routines, but you'll still want to read Okasaki's book first, for unless you're very much smarter than me you won't be able to understand Kars' paper until you read Okasaki's exposition of red black trees.
Finally, this book is not just useful for programmers in functional languages; logic programmers, using prolog or a varient, will also find this book very helpful, because most of the techniques (all of the techniques, really, with the exception perhaps of the lazy programming stuff) can be directly applied in a prolog programming setting as well.
After reading this book and implementing some of the data structures for yourself, you'll be amazed at how fast algorithms can run, even when written in a functional language!

Click Here to see more reviews about: Purely Functional Data Structures

Most books on data structures assume an imperative language such as C or C++.However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme.This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functional data structures.The author includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages.All source code is given in Standard ML and Haskell, and most of the programs are easily adaptable to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.

Buy NowGet 7% OFF

Click here for more information about Purely Functional Data Structures

Read More...

Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems Review

Principles of Database and Knowledge-Base Systems, Vol. 1: Classical Database Systems
Average Reviews:

(More customer reviews)
This book goes into the details of database conception and use. It's not completely up to date but tells you everything on relational databases. from theory to the actual used algorithms.

Click Here to see more reviews about: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems

Classical database technology is oriented toward a well-understood class of applications. Recently the field has attempted to solve the problems associated with new kinds of applications: computer-aided design, software engineering, and others that combine the need to deal with large amounts of data efficiently and the need to support queries in languages that are more expressive than those found in classical database systems. This book attempts to integrate the study of both the new and the classical forms of database systems.

Buy Now

Click here for more information about Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems

Read More...

Design of Multithreaded Software: The Entity-Life Modeling Approach Review

Design of Multithreaded Software: The Entity-Life Modeling Approach
Average Reviews:

(More customer reviews)
Dr Sanden has created a very impressive piece of literature. As a professor of computer science, I found this book to be an incredible asset to my professional "tool kit," so to speak. Further, Dr. Sanden's book would be critical asset as a text book as its narration keeps the reader enticed, yet has a number of solid application concepts. I unequivocally recommend this book as a professional asset as well as a text book. Again, this book is quite an impressive piece of work that is a strong contribution to this professional field.

Click Here to see more reviews about: Design of Multithreaded Software: The Entity-Life Modeling Approach

This book assumes familiarity with threads (in a language such as Ada, C#, or Java)and introduces the entity-life modeling (ELM) design approach for certain kinds of multithreaded software. ELM focuses on "reactive systems," which continuously interact with the problem environment. These "reactive systems" include embedded systems, as well as such interactive systems as cruise controllers and automated teller machines.
Part I covers two fundamentals: program-language thread support and state diagramming. These are necessary for understanding ELM and are provided primarily for reference. Part II covers ELM from different angles. Part III positions ELM relative to other design approaches.


Buy NowGet 21% OFF

Click here for more information about Design of Multithreaded Software: The Entity-Life Modeling Approach

Read More...