An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)
Format: PDF / Kindle (mobi) / ePub
Functional programming is rooted in lambda calculus, which constitutes the world's smallest programming language. This well-respected text offers an accessible introduction to functional programming concepts and techniques for students of mathematics and computer science. The treatment is as nontechnical as possible, and it assumes no prior knowledge of mathematics or functional programming. Cogent examples illuminate the central ideas, and numerous exercises appear throughout the text, offering reinforcement of key concepts. All problems feature complete solutions.
has records as abstractions for sequences of variables of differing types. Pascal has procedures and functions as statement and expression abstractions. Furthermore, procedure and function formal parameters abstract over procedures and functions within procedures and functions. The original BASIC only had functions as expression abstractions and did not allow function formal parameters to abstract over functions in expressions. In subsequent chapters, we will see how abstraction may be used to
requirement is for predicates which are used to test properties of objects and return booleans. For example, for numbers: We are not going to give a full formal treatment of types here. 5.3 Representing typed objects We are going to construct functions to represent typed objects. In general, an object will have a type and a value. We need to be able to: (1) construct an object from a value and a type (2) select the value and type from an object (3) test the type of an object (4)
would also like to thank my colleagues at Napier College, Glasgow University and Heriot-Watt University with whom I have argued about many of the ideas in this book, in particular Ken Barclay, Bill Findlay, John Patterson, David Watt and Stuart Anderson. I would, of course, like to thank everyone who has helped directly with this book: • Paul Chisholm for patiently and thoroughly checking much of the material: his help has been invaluable. • David Marwick for checking an early draft of
accessible approaches in Brady (1977), Burge (1975), Field and Harrison (1988), Glaser et al. (1984), Henson (1987), Peyton-Jones (1987), Revesz (1988), Stoy (1977) and Wegner (1971). Note that Barendregt, Burge, Field and Harrison, Hindley and Seldin, and Wegner only name one Church-Rosser theorem. Bird and Wadler (1988) discusses evaluation models, time and space efficiency and algorithm design techniques. Brady (1977) and Minsky (1972) contain details of the halting problem for Turing
New York: Norton Winston, P. H. and Horn, B. K. P. 1984. LISP, Reading, MA: Addison-Wesley Index * * * In this index, the main references are indicated in bold. " " 132, 151 "..." 131, 151 '...' 101 (...) 21, 45, 59, 62, 108 -> 72, 83 ->... -> 72, 83 :: 125, 150, 189 = = 31, 46 => 31, 46 =>... => 31, 46 . 21, 45, 59, 62, 125, 254 [...] 125, 150 [ ] 125, 150 α conversion 43, 46 absolute difference function 80 abstract data types 107 abstract interpreter 12