This book introduces the techniques of functional programming, the associated computational models, and the implementation of functional programming languages on both sequential and parallel machines. The authors present the desciptive power and semantic elegance of functional programming languages using Miranda as an example language.
A comprehensive study and exposition on the benefits of graph and term rewriting. Contains such theoretical advances as a single pushout categorical model of graph rewriting, a new theory of transfinite term rewriting and an abstract interpretation for term graph rewriting. Includes a discussion of parallelism.
In recent years, extensions of rewriting techniques that go beyond the traditional untyped algebraic rewriting framework have been investigated and developed. Among these extensions, conditional and typed systems are particularly important, as are higher-order systems, graph rewriting systems, etc. The international CTRS (Conditional and Typed Rewriting Systems) workshops are intended to offer a forum for researchers on such extensions of rewriting techniques. This volume presents the proceedings of the second CTRS workshop, which contributed to discussion and evaluation of new directions of research. (The proceedings of the first CTRS workshop are in Lecture Notes in Computer Science, Vol. 308.) Several important directions for extensions of rewriting techniques were stressed, which are reflected in the organization of the chapters in this volume: - Theory of conditional and Horn clause systems, - Infinite terms, non-terminating systems, and termination, - Extension of Knuth-Bendix completion, - Combined systems, combined languages and modularity, - Architecture, compilers and parallel computation, - Basic frameworks for typed and order-sorted systems, - Extension of unification and narrowing techniques.
This volume presents the tutorials given during the First International Spring School on Advanced Functional Programming Techniques, held in Bastad, Sweden in May 1995. The last few years have seen important new developments in functional programming techniques: concepts, such as monads, type classes, and several new special purpose libraries of higher-order functions are new and powerful methods for structuring programs. This book brings programmers, software engineers and computer scientists up-to-date with the latest techniques. Most tutorial contributions contain exercises to familiarize the reader with the new concepts and techniques, and only basic knowledge in functional programming is assumed.
Graph grammars originated in the late 60s, motivated by considerations about pattern recognition and compiler construction. Since then, the list of areas which have interacted with the development of graph grammars has grown quite impressively. Besides the aforementioned areas, it includes software specification and development, VLSI layout schemes, database design, modeling of concurrent systems, massively parallel computer architectures, logic programming, computer animation, developmental biology, music composition, visual languages, and many others. The area of graph grammars and graph transformations generalizes formal language theory based on strings and the theory of term rewriting based on trees. As a matter of fact, within the area of graph grammars, graph transformation is considered a fundamental computation paradigm where computation includes specification, programming, and implementation. Over the last three decades, graph grammars have developed at a steady pace into a theoretically attractive and important-for-applications research field. Volume 3 of the 'indispensable Handbook of' Graph Grammars and Computing by Graph Transformations presents the research on concurrency, parallelism, and distribution -- important paradigms of modern science. The topics considered include semantics for concurrent systems, modeling of concurrency, mobile and coordinated systems, algebraic specifications, Petri nets, visual design of distributed systems, and distributed algorithms. The contributions have been written in a tutorial/survey style by the top experts.
This book constitutes the thoroughly refereed post-workshop proceedings of the 11th International Workshop on the Implementation of Functional Languages, IFL'99, held in Lochem, The Netherlands, in September 1999. The 11 revised full papers presented were carefully selected during two rounds of reviewing. The papers are organized in sections on applications, compilation techniques, language concepts, and parallelism.
Programming is hard. Building a large program is like constructing a steam locomotive through a hole the size of a postage stamp. An artefact that is the fruit of hundreds of person-years is only ever seen by anyone through a lOO-line window. In some ways it is astonishing that such large systems work at all. But parallel programming is much, much harder. There are so many more things to go wrong. Debugging is a nightmare. A bug that shows up on one run may never happen when you are looking for it - but unfailingly returns as soon as your attention moves elsewhere. A large fraction of the program's code can be made up of marshalling and coordination algorithms. The core application can easily be obscured by a maze of plumbing. Functional programming is a radical, elegant, high-level attack on the programming problem. Radical, because it dramatically eschews side-effects; elegant, because of its close connection with mathematics; high-level, be cause you can say a lot in one line. But functional programming is definitely not (yet) mainstream. That's the trouble with radical approaches: it's hard for them to break through and become mainstream. But that doesn't make functional programming any less fun, and it has turned out to be a won derful laboratory for rich type systems, automatic garbage collection, object models, and other stuff that has made the jump into the mainstream.
This book constitutes the thoroughly refereed post-conference proceedings of the 12th International Symposium on Trends in Functional Programming, TFP 2011, held in Madrid, Spain, in May 2011. The 12 papers presented were carefully reviewed and selected from 21 submissions. They deal with all aspects of functional programming, taking a broad view of current and future trends in this area. The topical sections the papers are organized in are named as follows: types, compiling, paralelelism and distribution, data structures, and miscellaneous.
This book constitutes the proceedings of the Seventh International Symposium on Programming Languages: Implementations, Logics and Programs, PLILP '95, held in Utrecht, The Netherlands, in September 1995. The book presents 26 refereed full papers selected from 84 submissions; they report research on declarative programming languages and provide insights in the relation between the logic of those languages, implementation techniques, and the use of these languages in constructing real programs. In addition there are abstracts or full presentations of three invited talks as well as eight posters and demonstrations.
A programming course should concentrate as much as possible on a program's logical structure and design rather than simply show how to write code. The Functional Approach to Programming achieves this aim because logical concepts are evident and programs are transparent so can be written quickly and cleanly. In this book the authors emphasise the notions of function and function application which relate programming to familiar concepts from mathematics and logic. They introduce functional programming via examples but also explain what programs compute and how to reason about them. They show how the ideas can be implemented in the Caml language, a dialect of the ML family, and give examples of how complex programs from a variety of areas (such as arithmetic, tree algorithms, graph algorithms, text parsing and geometry) can be developed in close agreement with their specifications. Many exercises and examples are included throughout the book; solutions are also available.