Haskell Tutorial and Cookbook
Haskell Tutorial and Cookbook
About the Book
Note: the second edition was released August 6, 2019. There is a free upgrade for readers who purchased the first edition. This book (and all of my Leanpub books) are also available for free on my web site https://markwatson.com/books/ if you would like them for free.
Functional programming is the paradigm that is replacing object oriented methodologies. The Haskell language has several advantages for functional programming: the language is mature, is supported by many libraries and development tools, and compiles to compact and efficient executable programs that can be "single file" deployed.
Haskell does have a steep learning curve in general but in this book I show you a small but effective subset of Haskell that will get you started quickly.
This book also provides something for more experienced Haskell developers: new ideas for Haskell applications and example code that is likely to be useful for your own projects.
The first section of this book contains two chapters:
- A tutorial on pure Haskell development: no side effects.
- A tutorial on impure Haskell development: dealing with the world (I/O, network access, database access, etc.)
After working through these tutorial chapters you will understand enough of Haskell development to understand and be able to modify for your own use the cookbook examples in the second section. Some of the general topics will be covered again in the second book section that contains longer sample applications. For example, you will learn the basics for interacting with Sqlite and Postgres databases in the tutorial on impure Haskell code but you will see a much longer example later in the book when I provide code for a Blackjack playing program.
The second section of this book contains the following recipes implemented as complete programs:
- Textprocessing CSV Files
- Textprocessing JSON Files
- Natural Language Processing (NLP) tools
- Client and Server network programming examples
- Access data on the Web using scraping and by querying Semantic Web RDF Data Sources
- Annotating English text with Wikipedia/DBPedia URIs for entities in the original text. Entities can be people, places, organizations, etc.
- Using sqlite and Postgres databases.
- Play a simple form of the Blackjack card game.
The third section (added for the second edition) contains:
- Automatic generation of Knowledge Graphs
- Hybrid Haskell + Python NLP examples
Table of Contents
- Cover Material, Copyright, and License
-
Preface
- Additional Material in the Second Edition
- A Request from the Author
- Structure of the Book
- Code Examples
- Functional Programming Requires a Different Mind Set
- eBooks Are Living Documents
- Setting Up Your Development Environment
- Why Haskell?
- Enjoy Yourself
- Acknowledgements
- Section 1 - Tutorial
-
Tutorial on Pure Haskell Programming
- Interactive GHCi Shell
- Introduction to Haskell Types
- Functions Are Pure
- Using Parenthesis or the Special $ Character and Operator Precedence
- Lazy Evaluation
- Understanding List Comprehensions
- Haskell Rules for Indenting Code
- Understanding let and where
- Conditional do Expressions and Anonymous Functions
- Maps
- Sets
- More on Functions
- Comments on Dealing With Immutable Data and How to Structure Programs
- Error Handling
- Testing Haskell Code
- Pure Haskell Wrap Up
-
Tutorial on Impure Haskell Programming
- Hello IO () Monad
- A Note About >> and >>= Operators
- Console IO Example with Stack Configuration
- File IO
- Error Handling in Impure Code
- Network IO
- A Haskell Game Loop that Maintains State Functionally
- A More Detailed Look at Monads
- Using Applicative Operators <$> and <*>: Finding Common Words in Files
- List Comprehensions Using the do Notation
- Dealing With Time
- Using Debug.Trace
- Wrap Up
- Section 2 - Cookbook
-
Text Processing
- CSV Spreadsheet Files
- JSON Data
- Cleaning Natural Language Text
-
Natural Language Processing Tools
- Resolve Entities in Text to DBPedia URIs
- Bag of Words Classification Model
- Text Summarization
- Part of Speech Tagging
- Natural Language Processing Wrap Up
-
Linked Data and the Semantic Web
- The SPARQL Query Language
- A Haskell HTTP Based SPARQL Client
- Querying Remote SPARQL Endpoints
- Linked Data and Semantic Web Wrap Up
-
Web Scraping
- Using the Wreq Library
- Using the HandsomeSoup Library for Parsing HTML
- Web Scraping Wrap Up
-
Using Relational Databases
- Database Access for Sqlite
- Database Access for Postgres
- Haskell Program to Play the Blackjack Card Game
- Section 3 - Larger Projects
-
Knowledge Graph Creator
- Code Layout For the KGCreator Project and strategies for sharing Haskell code between projects
- The Main Event: Detecting Entities in Text
- Utility Code for Generating RDF
- Utility Code for Generating Cypher Input Data for Neo4J
- Top Level API Code for Handling Knowledge Graph Data Generation
- Wrapup for Automating the Creation of Knowledge Graphs
-
Hybrid Haskell and Python Natural Language Processing
- Example Use of the Haskell NLP Client
- Setting up the Python NLP Server
- Understanding the Haskell NLP Client Code
- Wrapup for Using the Python SpaCy NLP Service
-
Hybrid Haskell and Python For Coreference Resolution
- Installing the Python Coreference Server
- Understanding the Haskell Coreference Client Code
- Wrapup for Using the Python Coreference NLP Service
- Book Wrap Up
-
Appendix A - Haskell Tools Setup
- stack
- Emacs Setup
- Do you want more of an IDE-like Development Environment?
- hlint
The Leanpub 60-day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms
Do Well. Do Good.
Authors have earned$11,714,583writing, publishing and selling on Leanpub, earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers), EPUB (for phones and tablets) and MOBI (for Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them
Top Books
Recipes for Decoupling
Matthias NobackWrite software that survives
OpenIntro Statistics
David Diez, Christopher Barr, Mine Cetinkaya-Rundel, and OpenIntroA complete foundation for Statistics, also serving as a foundation for Data Science.
Leanpub revenue supports OpenIntro (US-based nonprofit) so we can provide free desk copies to teachers interested in using OpenIntro Statistics in the classroom and expand the project to support free textbooks in other subjects.
More resources: openintro.org.
C++20 - The Complete Guide
Nicolai M. JosuttisAll new language and library features of C++20 (for those who know previous C++ versions).
The book presents all new language and library features of C++20. Learn how this impacts day-to-day programming, to benefit in practice, to combine new features, and to avoid all new traps.
Buy early, pay less, free updates.
Other books:
CQRS by Example
Carlos Buenosvinos, Christian Soronellas, and Keyvan Akbary- Leverage your Software Architecture skills by learning everything about CQRS in detail with lots of examples
- Develop faster applications by applying CQRS and fostering Read Models and Projections
- Learn how to apply CQRS into a brownfield project from a pragmatic approach
Ansible for DevOps
Jeff GeerlingAnsible is a simple, but powerful, server and configuration management tool. Learn to use Ansible effectively, whether you manage one server—or thousands.
Maîtriser Apache JMeter
Philippe Mouawad, Bruno Demion (Milamber), and Antonio Gomes RodriguesToute la puissance d'Apache JMeter expliquée par ses commiteurs et utilisateurs experts. De l'intégration continue en passant par le Cloud, vous découvrirez comment intégrer JMeter à vos processus "Agile" et Devops.
If you're looking for the newer english version of this book, go to Master JMeter : From load testing to DevOps
Jetpack Compose internals
Jorge CastilloJetpack Compose is the future of Android UI. Master how it works internally and become a more efficient developer with it. You'll also find it valuable if you are not an Android dev. This book provides all the details to understand how the Compose compiler & runtime work, and how to create a client library using them.
The PowerShell Scripting and Toolmaking Book
Don Jones and Jeff HicksLearn the patterns, practices, and details of PowerShell Scripting and Toolmaking from the industry's two most recognized experts on the subject.
Mastering STM32 - Second Edition
Carmine NovielloWith more than 1200 microcontrollers, STM32 is probably the most complete ARM Cortex-M platform on the market. This book aims to be the most complete guide around introducing the reader to this exciting MCU portfolio from ST Microelectronics and its official CubeHAL and STM32CubeIDE development environment.
Introduction to Data Science
Rafael A IrizarryThe demand for skilled data science practitioners in industry, academia, and government is rapidly growing. This book introduces concepts from probability, statistical inference, linear regression and machine learning and R programming skills. Throughout the book we demonstrate how these can help you tackle real-world data analysis challenges.
Top Bundles
- #1
Software Architecture
2 Books
"Software Architecture for Developers" is a practical and pragmatic guide to modern, lightweight software architecture, specifically aimed at developers. You'll learn:The essence of software architecture.Why the software architecture role should include coding, coaching and collaboration.The things that you really need to think about before... - #2
CCIE Service Provider Ultimate Study Bundle
2 Books
Piotr Jablonski, Lukasz Bromirski, and Nick Russo have joined forces to deliver the only CCIE Service Provider training resource you'll ever need. This bundle contains a detailed and challenging collection of workbook labs, plus an extensively detailed technical reference guide. All of us have earned the CCIE Service Provider certification... - #4
Pattern-Oriented Memory Forensics and Malware Detection
2 Books
This training bundle for security engineers and researchers, malware and memory forensics analysts includes two accelerated training courses for Windows memory dump analysis using WinDbg. It is also useful for technical support and escalation engineers who analyze memory dumps from complex software environments and need to check for possible... - #6
All the Books of The Medical Futurist
6 Books
We put together the most popular books from The Medical Futurist to provide a clear picture about the major trends shaping the future of medicine and healthcare. Digital health technologies, artificial intelligence, the future of 20 medical specialties, big pharma, data privacy, digital health investments and how technology giants such as Amazon...