Note: Supplemental materials are not guaranteed with Rental or Used book purchases.
Purchase Benefits
What is included with this book?
Bryan O'Sullivan is an Irish hacker and writer who likes distributed systems, open source software, and programming languages. He was a member of the initial design team for the Jini network service architecture (subsequently open sourced as Apache River). He has made significant contributions to, and written a book about, the popular Mercurial revision control system. He lives in San Francisco with his wife and sons. Whenever he can, he runs off to climb rocks.
John Goerzen is an American hacker and author. He has written a number of real-world Haskell libraries and applications, including the HDBC database interface, the ConfigFile configuration file interface, a podcast downloader, and various other libraries relating to networks, parsing, logging, and POSIX code. John has been a developer for the Debian GNU/Linux operating system project for over 10 years and maintains numerous Haskell libraries and code for Debian. He also served as President of Software in the Public Interest, Inc., the legal parent organization of Debian. John lives in rural Kansas with his wife and son, where he enjoys photography and geocaching.
Don Stewart is an Australian hacker based in Portland, Oregon. Don has been involved in a diverse range of Haskell projects, including practical libraries, such as Data.ByteString and Data.Binary, as well as applying the Haskell philosophy to real-world applications including compilers, linkers, text editors, network servers, and systems software. His recent work has focused on optimizing Haskell for high-performance scenarios, using techniques from term rewriting.
Dedication | |
Preface | |
Have We Got a Deal for You! | |
What to Expect from This Book | |
What to Expect from Haskell | |
A Brief Sketch of Haskell's History | |
Helpful Resources | |
Conventions Used in This Book | |
Using Code Examples | |
Safari(r) Books Online | |
How to Contact Us | |
Acknowledgments | |
Getting Started | |
Your Haskell Environment | |
Getting Started with ghci, the Interpreter | |
Basic Interaction: Using ghci as a Calculator | |
Command-Line Editing in ghci | |
Lists | |
Strings and Characters | |
First Steps with Types | |
A Simple Program | |
Types and Functions | |
Why Care About Types? | |
Haskell's Type System | |
What to Expect from the Type System | |
Some Common Basic Types | |
Function Application | |
Useful Composite Data Types: Lists and Tuples | |
Functions over Lists and Tuples | |
Function Types and Purity | |
Haskell Source Files, and Writing Simple Functions | |
Understanding Evaluation by Example | |
Polymorphism in Haskell | |
The Type of a Function of More Than One Argument | |
Why the Fuss over Purity? | |
Conclusion | |
Defining Types, Streamlining Functions | |
Defining a New Data Type | |
Type Synonyms | |
Algebraic Data Types | |
Pattern Matching | |
Record Syntax | |
Parameterized Types | |
Recursive Types | |
Reporting Errors | |
Introducing Local Variables | |
The Offside Rule and Whitespace in an Expression | |
The case Expression | |
Common Beginner Mistakes with Patterns | |
Conditional Evaluation with Guards | |
Functional Programming | |
Thinking in Haskell | |
A Simple Command-Line Framework | |
Warming Up: Portably Splitting Lines of Text | |
Infix Functions | |
Working with Lists | |
How to Think About Loops | |
Anonymous (lambda) Functions | |
Partial Function Application and Currying | |
As-patterns | |
Code Reuse Through Composition | |
Tips for Writing Readable Code | |
Space Leaks and Strict Evaluation | |
Writing a Library: Working with JSON Data | |
A Whirlwind Tour of JSON | |
Representing JSON Data in Haskell | |
The Anatomy of a Haskell Module | |
Compiling Haskell Source | |
Generating a Haskell Program and Importing Modules | |
Printing JSON Data | |
Type Inference Is a Double-Edged Sword | |
A More General Look at Rendering | |
Developing Haskell Code Without Going Nuts | |
Pretty Printing a String | |
Arrays and Objects, and the Module Header | |
Table of Contents provided by Publisher. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.