How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Daniel P. Friedman, Matthias Felleisen
"drawings by Duane Bibby" foreword by Gerald J. Sussman "I learned more about LISP from this book than I have from any of the other LISP books I've read over the years. . . . While other books will tell you the mechanics of LISP, they can leave you largely uninformed on the style of problem-solving for which LISP is optimized. The Little LISPer teaches you how to think in the LISP language. . . an inexpensive, enjoyable introduction." -- Gregg Williams, Byte The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both "The Little Schemer" (formerly known as "The Little LISPer" ) and its new companion volume, "The Seasoned Schemer," apart from other books on LISP. The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these books will open new doors of thought to anyone who wants to find out what computing is really about. "The Little Schemer" introduces computing as an extension of arithmetic and algebra -- things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas. "The Seasoned Schemer" informs the reader about additional dimensions of computing: functions as values, change of state, and exceptional cases. "The Little LISPer" has been a popular introduction to LISP for many years. It had appeared in French and Japanese. "The Little Schemer" and "The SeasonedSchemer" are worthy successors and will prove equally popular as textbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science. Download DrScheme - a graphical environment for developing Scheme programs
Kees Doets, Jan van Eijck, Jan Eijck
Long ago, when Alexander the Great asked the mathematician Menaechmus for a crash course in geometry, he got the famous reply There is no royal road to mathematics. Where there was no shortcut for Alexander, there is no shortcut for us. Still, the fact that we have access to computers and mature programming languages means that there are avenues for us that were denied to the kings and emperors of yore. The purpose of this book is to teach logic and mathematical reasoning in practice, and to connect logical reasoning with computer programming in Haskell. Haskell emerged in the 1990s as a standard for lazy functional programming, a programming style where arguments are evaluated only when the value is actually needed. Haskell is a marvelous demonstration tool for logic and maths because its functional character allows implementations to remain very close to the concepts that get implemented, while the laziness permits smooth handling of infinite data structures. This book does not assume the reader to have previous experience with either programming or construction of formal proofs, but acquaintance with mathematical notation, at the level of secondary school mathematics is presumed. Everything one needs to know about mathematical reasoning or programming is explained as we go along. After proper digestion of the material in this book, the reader will be able to write interesting programs, reason about their correctness, and document them in a clear fashion. The reader will also have learned how to set up mathematical proofs in a structured way, and how to read and digest mathematical proofs written by others. This is the updated, expanded, and corrected second edition of a much-acclaimed textbook. Praise for the first edition: Doets and van Eijck s The Haskell Road to Logic, Maths and Programming is an astonishingly extensive and accessible textbook on logic, maths, and Haskell. Ralf Laemmel, Professor of Computer Science, University of Koblenz-Landau
Antonio Cisternino, Adam Granicz, Don Syme
In this book, the world's foremost experts in F# show you how to program in F# the way they do. Written by F#'s inventor and two major contributors to its development, Expert F# is the authoritative, comprehensive, and in-depth guide to the language and its use. Designed to help others become experts, the first part of the book quickly yet carefully describes the F# language. The second part then carefully shows how to elegantly use F# for a wide variety of practical programming tasks. This comprehensive reference of F# concepts, syntax, and features offers a treasury of expert techniques.
After the success of the first EDITION, Introduction to Functional Programming using Haskell has been thoroughly updated and revised to provide a complete grounding in the principles and techniques of programming with functions. The second EDITION uses the popular language Haskell to express functional programs. There are new chapters on program optimisation, abstract datatypes in a functional setting, and programming in a monadic style. There are complete new case studies, and many new exercises. As in the first EDITION, there is an emphasis on the fundamental techniques for reasoning about functional programs, and for deriving them systematically from their specifications. The book is self-contained, assuming no prior knowledge of programming and is suitable as an introductory undergraduate text for first- or second-year students.
Andrew W. Appel
The control and data flow of a program can be represented using continuations, a concept from denotational semantics that has practical application in real compilers. This book shows how continuation-passing style is used as an intermediate representation on which to perform optimisations and program transformations. Continuations can be used to compile most programming languages. The method is illustrated in a compiler for the programming language Standard ML. However, prior knowledge of ML is not necessary, as the author carefully explains each concept as it arises. This is the first book to show how concepts from the theory of programming languages can be applied to the producton of practical optimising compilers for modern languages like ML. This book will be essential reading for compiler writers in both industry and academe, as well as for students and researchers in programming language theory.
Haskell is a purely functional language that allows programmers to rapidly develop clear, concise, and correct software. The language has grown in popularity in recent years, both in teaching and in industry. This book is based on the author's experience of teaching Haskell for more than twenty years. All concepts are explained from first principles and no programming experience is required, making this book accessible to a broad spectrum of readers. While Part I focuses on basic concepts, Part II introduces the reader to more advanced topics. This new edition has been extensively updated and expanded to include recent and more advanced features of Haskell, new examples and exercises, selected solutions, and freely downloadable lecture slides and example code. The presentation is clean and simple, while also being fully compliant with the latest version of the language, including recent changes concerning applicative, monadic, foldable, and traversable types.
Benjamin C. Pierce
Basic Category Theory for Computer Scientists provides a straightforward presentationof the basic constructions and terminology of category theory, including limits, functors, naturaltransformations, adjoints, and cartesian closed categories.
James L. Hein
Thoroughly updated, the new Third Edition of Discrete Structures, Logic, and Computability introduces beginning computer science and computer engineering students to the fundamental techniques and ideas used by computer scientists today, focusing on topics from the fields of mathematics, logic, and computer science itself. Dr. Hein provides elementary introductions to those ideas and techniques that are necessary to understand and practice the art and science of computing. The text contains all the topics for discrete structures in the reports of the IEEE/ACM Joint Task Force on Computing Curricula for computer science programs and for computer engineering programs.
Containing example exercises, this reference to category theory is suitable for researchers and graduates in philosophy, mathematics, and computer science. With definitions of concepts, and proofs of propositions and theorems, the text makes the ideas of this topic understandable to the broad readership.
Over time, basic research tends to lead to specialization – increasingly narrow t- ics are addressed by increasingly focussed communities, publishing in increasingly con ned workshops and conferences, discussing increasingly incremental contri- tions. Already the community of programming languages is split into various s- communities addressing different aspects and paradigms (functional, imperative, relational, and object-oriented). Only a few people manage to maintain a broader view, and even fewer step back in order to gain an understanding about the basic principles, their interrelation, and their impact in a larger context. The pattern calculus is the result of a profound re-examination of a 50-year - velopment. It attempts to provide a unifying approach, bridging the gaps between different programming styles and paradigms according to a new slogan – compu- tion is pattern matching. It is the contribution of this book to systematically and elegantly present and evaluate the power of pattern matching as the guiding paradigm of programming. Patterns are dynamically generated, discovered, passed, applied, and automatically adapted, based on pattern matching and rewriting technology, which allows one to elegantly relate things as disparate as functions and data structures. Of course, pattern matching is not new. It underlies term rewriting – it is, for example, inc- porated in, typically functional, programming languages, like Standard ML – but it has never been pursued as the basis of a unifying framework for programming.
A comprehensive reference to category theory for students and researchers in mathematics, computer science, logic, cognitive science, linguistics, and philosophy. Useful for self-study and as a course text, the book includes all basic definitions and theorems (with full proofs), as well as numerous examples and exercises.