Haskell: Difference between revisions
[checked revision] | [pending revision] |
No edit summary Tag: Manual revert |
mNo edit summary |
||
Line 13: | Line 13: | ||
* Haskell is ''pure''. A function when invoked using the same arguments will return the same result every time. |
* Haskell is ''pure''. A function when invoked using the same arguments will return the same result every time. |
||
* Haskell is ''lazy''. Evaluations are performed only when needed. |
* Haskell is ''lazy''. Evaluations are performed only when needed. |
||
* Haskell provides a modern type system with state |
* Haskell provides a modern type system with state-of-the-art features like type classes and generalized algebraic data types (soon enough, terms like those will roll smoothly off your tongue). |
||
Haskell is enjoyable to use because dealing with pure functions makes code much easier to reason about, and the advanced type system helps catch silly and profound mistakes. |
Haskell is enjoyable to use because dealing with pure functions makes code much easier to reason about, and the advanced type system helps catch silly and profound mistakes. |
||
Line 25: | Line 25: | ||
== Beginner's Track == |
== Beginner's Track == |
||
This section introduces you to Haskell basics and some commonly used libraries. At the end of this track you should be able to write simple Haskell programs. Most chapters include exercises, with solutions, for your practice. |
This section introduces you to Haskell basics and some commonly used libraries. At the end of this track, you should be able to write simple Haskell programs. Most chapters include exercises, with solutions, for your practice. |
||
{| cellpadding="15" cellspacing="0" style="background-color: honeydew; border: 1px solid MediumAquamarine; border-collapse: collapse; margin: 0.8em 0; vertical-align: top; width: 100%;" |
{| cellpadding="15" cellspacing="0" style="background-color: honeydew; border: 1px solid MediumAquamarine; border-collapse: collapse; margin: 0.8em 0; vertical-align: top; width: 100%;" |
Latest revision as of 03:45, 6 April 2024
Haskell is a featured book on Wikibooks because it contains substantial content, it is well-formatted, and the Wikibooks community has decided to feature it on the main page or in other places. Please continue to improve it and thanks for the great work so far! You can edit its advertisement template. |
Haskell is a functional programming language. It is distinct in a few ways:
- Haskell is pure. A function when invoked using the same arguments will return the same result every time.
- Haskell is lazy. Evaluations are performed only when needed.
- Haskell provides a modern type system with state-of-the-art features like type classes and generalized algebraic data types (soon enough, terms like those will roll smoothly off your tongue).
Haskell is enjoyable to use because dealing with pure functions makes code much easier to reason about, and the advanced type system helps catch silly and profound mistakes.
Our aim in this book is to introduce you to the Haskell programming language — from the very basics to advanced features — and to computer programming in general. We urge seasoned programmers to be especially patient with this process. The languages you are familiar with are likely to differ greatly from Haskell, and the habits acquired from those languages might make it difficult to understand how things work — Haskell is simple, but different. Learning to see the world through the warped mindset of a functional programmer is an adventure in a brave new world, which brings knowledge valuable far beyond the boundaries of any language.
Overview
[edit | edit source]The book is divided into three sections: a Beginner's Track, an Advanced Track, and a section called Haskell in Practice. The last section, which covers practical use cases, depends only on the Beginner's Track. Seasoned programmers may read the overview to quickly evaluate what makes Haskell unique and different from other languages.
Please contribute! Anyone, regardless of Haskell competency, can help out. Spend five minutes improving a module and save someone else hours of time. Check out the notes for contributors. Even if you get confused by a page, tell us about it on the discussion page (politely, of course). |
Beginner's Track
[edit | edit source]This section introduces you to Haskell basics and some commonly used libraries. At the end of this track, you should be able to write simple Haskell programs. Most chapters include exercises, with solutions, for your practice.
Haskell Basics[edit | edit source] |
Elementary Haskell[edit | edit source] |
Intermediate Haskell[edit | edit source] |
Monads[edit | edit source] |
Advanced Track
[edit | edit source]This section introduces wider functional programming concepts such as different data structures and type theory. It will also cover more practical topics like concurrency.
Welcome to Haskell[edit | edit source] |
Fun with Types[edit | edit source] |
Wider Theory[edit | edit source] |
Haskell Performance[edit | edit source] |
Haskell in Practice
[edit | edit source]Day-to-day issues of working with Haskell include items such as knowing the standard libraries, building graphical interfaces, and working with databases. You should be able to jump directly to this section from the beginner's track.
Libraries Reference[edit | edit source] |
General Practices[edit | edit source] |
Specialised Tasks[edit | edit source] |
Appendices
[edit | edit source]About the book
[edit | edit source]- Notes for contributors
- Style conventions
- To do
- Templates for the Haskell wikibook
- Experimental Modules
- List of topics
Other Haskell tutorials
[edit | edit source]- Haskell Meta-tutorial — the tutorial to find other tutorials
- Learn You a Haskell for Great Good — Tutorial aimed at beginners who may have experience in imperative programming languages but haven't programmed in a functional language before. Available online at no charge (CC BY-NC-SA license); also released as a conventional book.
- Real World Haskell — an O'Reilly book, available online at no charge (CC BY-NC license). Built around case studies of practical applications.
Tutorials that have been incorporated into the Haskell Wikibook
[edit | edit source]The following may be read independently, but their content has been imported and adapted already into the Wikibook here
- Write Yourself a Scheme in 48 Hours — An alternate approach to teaching Haskell (and perhaps Scheme), aimed at a more advanced audience (though not necessarily one that knows how to program!)
- Yet Another Haskell Tutorial — aimed at beginners and takes a practical approach to things.
Additional resources
[edit | edit source]- Learning Haskell at haskell.org
- What I Wish I Knew When Learning Haskell — A wide-ranging collection of concise summaries of many intermediate and advanced Haskell topics. Released in the public domain.