Real World Haskell
by O'Sullivan, Bryan; Goerzen, John; Stewart, DonRent Textbook
Digital
New Textbook
We're Sorry
Sold Out
Used Textbook
We're Sorry
Sold Out
How Marketplace Works:
- This item is offered by an independent seller and not shipped from our warehouse
- Item details like edition and cover design may differ from our description; see seller's comments before ordering.
- Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
- Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
- Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.
Summary
Author Biography
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.
Table of Contents
| 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. |
An electronic version of this book is available through VitalSource.
This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.
By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.
Digital License
You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.
More details can be found here.
A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.
Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.
Please view the compatibility matrix prior to purchase.