Haskell : the craft of functional programming
Autor Principal: | |
---|---|
Formato: | Libro |
Lengua: | inglés |
Datos de publicación: |
Harlow :
Pearson Education,
c2011
|
Edición: | 3rd ed. |
Temas: | |
Acceso en línea: | Consultar en el Cátalogo |
Notas: | Incluye índice y bibliografía. |
Descripción Física: | xxii, 585 p. : il. ; 24 cm. |
ISBN: | 9780201882957 |
Tabla de Contenidos:
- 1 Introducing functional programming
- 1.1 Computers and modelling
- 1.2 What is a function?
- 1.3 Pictures and functions
- 1.4 Types
- 1.5 The Haskell programming language
- 1.6 Expressions and evaluation
- 1.7 Definitions
- 1.8 Function definitions
- 1.9 Types and functional programming
- 1.10 Calculation and evaluation
- 1.11 The essence of Haskell programming
- 1.12 Domain-specific languages
- 1.13 Two models of Pictures
- 1.14 Tests, properties and proofs
- 2 Getting started with Haskell and GHCi
- 2.1 A first Haskell program
- 2.2 Using Haskell in practice
- 2.3 Using GHCi
- 2.4 The standard prelude and the Haskell libraries
- 2.5 Modules
- 2.6 A second example: Pictures
- 2.7 Errors and error messages
- 3 Basic types and definitions
- 3.1 The Booleans: Bool
- 3.2 The integers: Integer and Int
- 3.3 Overloading
- 3.4 Guards
- 3.5 Characters and strings
- 3.6 Floating-point numbers: Float
- 3.7 Syntax
- 4 Designing and writing programs
- 4.1 Where do I start? Designing a program in Haskell
- 4.2 Solving a problem in steps: local definitions
- 4.3 Defining types for ourselves: enumerated types
- 4.4 Recursion
- 4.5 Primitive recursion in practice
- 4.6 Extended exercise: pictures
- 4.7 General forms of recursion
- 4.8 Program testing
- 5 Data types, tuples and lists
- 5.1 Introducing tuples and lists
- 5.2 Tuple types
- 5.3 Introducing algebraic types
- 5.4 Our approach to lists
- 5.5 Lists in Haskell
- 5.6 List comprehensions
- 5.7 A library database
- 6 Programming with lists
- 6.1 Generic functions: polymorphism
- 6.2 Haskell list functions in the Prelude
- 6.3 Finding your way around the Haskell libraries
- 6.4 The Picture example: implementation
- 6.5 Extended exercise: alternative implementations of pictures
- 6.6 Extended exercise: positioned pictures
- 6.7 Extended exercise: supermarket billing
- 6.8 Extended exercise: cards and card games
- 7 Defining functions over lists
- 7.1 Pattern matching revisited
- 7.2 Lists and list patterns
- 7.3 Primitive recursion over lists
- 7.4 Finding primitive recursive definitions
- 7.5 General recursions over lists
- 7.6 Example: text processing
- 8 Playing the game: I/O in Haskell
- 8.1 Rock - Paper - Scissors: strategies
- 8.2 Why is I/O an issue?
- 8.3 The basics of input/output
- 8.4 The do notation
- 8.5 Loops and recursion
- 8.6 Rock - Paper - Scissors: playing the game
- 9 Reasoning about programs
- 9.1 Understanding definitions
- 9.2 Testing and proof
- 9.3 Definedness, termination and finiteness
- 9.4 A little logic
- 9.5 Induction
- 9.6 Further examples of proofs by induction
- 9.7 Generalizing the proof goal
- 10 Generalization: patterns of computation
- 10.1 Patterns of computation over lists
- 10.2 Higher-order functions: functions as arguments
- 10.3 Folding and primitive recursion
- 10.4 Generalizing: splitting up lists
- 10.5 Case studies revisited
- 11 Higher-order functions
- 11.1 Operators: function composition and application
- 11.2 Expressions for functions: lambda abstractions
- 11.3 Partial application
- 11.4 Under the hood: curried functions
- 11.5 Defining higher-order functions
- 11.6 Verification and general functions
- 12 Developing higher-order programs
- 12.1 Revisiting the Picture example
- 12.2 Functions as data: strategy combinators
- 12.3 Functions as data: recognising regular expressions
- 12.4 Case studies: functions as data
- 12.5 Example: creating an index
- 12.6 Development in practice
- 12.7 Understanding programs
- 13 Overloading, type classes and type checking
- 13.1 Why overloading?
- 13.2 Introducing classes
- 13.3 Signatures and instances
- 13.4 A tour of the built-in Haskell classes
- 13.5 Type checking and type inference: an overview
- 13.6 Monomorphic type checking
- 13.7 Polymorphic type checking
- 13.8 Type checking and classes
- 14 Algebraic types
- 14.1 Algebraic type definitions revisited
- 14.2 Recursive algebraic types
- 14.3 Polymorphic algebraic types
- 14.4 Modelling program errors
- 14.5 Design with algebraic data types
- 14.6 Algebraic types and type classes
- 14.7 Reasoning about algebraic types
- 15 Case study: Huffman codes
- 15.1 Modules in Haskell
- 15.2 Modular design
- 15.3 Coding and decoding
- 15.4 Implementation – I
- 15.5 Building Huffman trees
- 15.6 Design
- 15.7 Implementation – II
- 16 Abstract data types
- 16.1 Type representations
- 16.2 The Haskell abstract data type mechanism
- 16.3 Queues
- 16.4 Design
- 16.5 Simulation
- 16.6 Implementing the simulation
- 16.7 Search trees
- 16.8 Sets
- 16.9 Relations and graphs
- 16.10 Commentary
- 17 Lazy programming
- 17.1 Lazy evaluation
- 17.2 Calculation rules and lazy evaluation
- 17.3 List comprehensions revisited
- 17.4 Data-directed programming
- 17.5 Case study: parsing expressions
- 17.6 Infinite lists
- 17.7 Why infinite lists?
- 17.8 Case study: simulation
- 17.9 Proof revisited
- 18 Programming with monads
- 18.1 I/O programming
- 18.2 Further I/O
- 18.3 The calculator
- 18.4 The do notation revisited
- 18.5 Monads: languages for functional programming
- 18.6 Example: monadic computation over trees
- 19 Domain-Specific Languages
- 19.1 Programming languages everywhere
- 19.2 Why DSLs in Haskell?
- 19.3 Shallow and deep Embeddings
- 19.4 A DSL for regular expressions
- 19.5 Monadic DSLs
- 19.6 DSLs for computation: generating data in QuickCheck
- 19.7 Taking it further
- 20 Time and space behaviour
- 20.1 Complexity of functions
- 20.2 The complexity of calculations
- 20.3 Implementations of sets
- 20.4 Space behaviour
- 20.5 Folding revisited
- 20.6 Avoiding recomputation: memoization
- 21 Conclusion
- Appendices
- A. A Functional, imperative and 00 programming
- B Glossary
- C Haskell operators
- D Haskell practicalities
- E GHCi errors
- F Project ideas
- Bibliography
- - See more at: http://www.pearsonhighered.com/educator/product/Haskell-The-Craft-of-Functional-Programming/9780201882957.page#sthash.pYGkgWH8.dpuf