Difference between revisions of "Books"

From HaskellWiki
Jump to navigation Jump to search
(wiki syntax. more content)
(223 intermediate revisions by 52 users not shown)
Line 1: Line 1:
  +
Books covering many aspects of Haskell.
=Language Definition=
 
  +
  +
==Language and library definition==
   
 
<DL>
 
<DL>
  +
<dt> James Church: [[Image:Learning_Haskell_Data_Analysis_cov.png|frameless|right|70px|Cover]] [https://www.packtpub.com/big-data-and-business-intelligence/learning-haskell-data-analysis/?utm_source=GCwiki.haskell.org&utm_medium=pod&utm_campaign=1784394707 Learning Haskell Data Analysis], Paperback: 198 pages, Packt, May 2015, English, ISBN-10: 1-784-39470-7, ISBN-13: 9781784394707
<DT>Simon Peyton Jones: [http://titles.cambridge.org/catalogue.asp?isbn=0521826144 <EM>Haskell 98 Language and Libraries</EM>], Cambridge University Press, 2003, Hardback, 272 pages, ISBN: 0521826144, £35.00
 
<BR>
+
<dd>
  +
<B>Book Description</B><BR>
<BLOCKQUOTE>
 
  +
This book provides you with the skills to handle large amounts of data, even if that data is in a less than perfect state. Each chapter in the book helps to build a small library of code that will be used to solve a problem for that chapter.
  +
  +
The book starts with creating databases out of existing datasets, cleaning that data, and interacting with databases within Haskell in order to produce charts for publications. It then moves towards more theoretical concepts that are fundamental to introductory data analysis, but in a context of a real-world problem with real-world data. As you progress in the book, you will be relying on code from previous chapters in order to help create new solutions quickly. By the end of the book, you will be able to manipulate, find, and analyze large and small sets of data using your own Haskell libraries.
  +
  +
<DT>[[Image:Haskell_98_Language_and_Libraries.jpg|frameless|right|Cover]]
  +
Simon Peyton Jones: [http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=0521826144 "Haskell 98 language and libraries: the Revised Report"], Cambridge University Press, 2003, Hardback, 272 pages, ISBN 0521826144, £45.00
  +
<DD>
 
<B>Book Description</B><BR>
 
<B>Book Description</B><BR>
 
Haskell is the world's leading lazy functional programming language,
 
Haskell is the world's leading lazy functional programming language,
Line 17: Line 26:
 
time. It should be a standard reference work for anyone involved in
 
time. It should be a standard reference work for anyone involved in
 
research, teaching, or application of Haskell.
 
research, teaching, or application of Haskell.
  +
</BLOCKQUOTE>
 
 
The entire language definition is also available online:
 
The entire language definition is also available online:
[[Language_and_library_specification|Language and library specification]]
+
[[Language_and_library_specification|Language and library
  +
specification]].
</DT>
 
 
</DL>
 
</DL>
   
= Textbooks=
+
==Textbooks==
   
 
<DL>
 
<DL>
  +
<dt>[[Image:functional-reactive-domain-modeling.jpg|frameless|right|70px|Cover]] Debasish Ghosh: [http://www.manning.com/ghosh2/ <em>Functional and Reactive Domain Modeling</em>], Paperback / eBook: 325 pages, Manning (September 2015), English, ISBN: 978-1-6172-9224-8
<DT>Paul Hudak: [http://www.haskell.org/soe <EM>The Haskell School of Expression: Learning Functional Programming through Multimedia</EM>], Cambridge University Press, New York, 2000, 416
 
  +
<dd><B>Book Description</B><BR>
pp, 15 line diagrams, 75 exercises, Paperback $29.95, ISBN:
 
  +
Functional and Reactive Domain Modeling teaches you how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. You will start with the basics of functional programming and gradually progress to the advanced concepts and patterns that you need to know to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types, typeclass based design, and isolation of side-effects can make your model compose for readability and verifiability.
0521644089, Hardback $74.95, ISBN: 0521643384
 
  +
<blockquote>
 
  +
On the subject of reactive modeling, the book focuses on higher order concurrency patterns like actors and futures. It uses the Akka framework as the reference implementation and demonstrates how advanced architectural patterns like event sourcing and CQRS can be put to great use in implementing scalable models. You will learn techniques that are radically different from the standard RDBMS based applications that are based on mutation of records. You'll also pick up important patterns like using asynchronous messaging for interaction based on non blocking concurrency and model persistence, which delivers the speed of in-memory processing along with suitable guarantees of reliability.
  +
  +
<dt>[[Image:functional-reactive-programming.jpg|frameless|right|70px|Cover]] Stephen Blackheath and Anthony Jones: [http://www.manning.com/blackheath/ <em>Functional Reactive Programming</em>], Paperback / eBook: 245 pages, Manning (September 2015), English, ISBN: 978-1-6334-3010-5
  +
<dd><B>Book Description</B><BR>
  +
Functional Reactive Programming (FRP) is an alternative to the Observer pattern that's designed to deal with events as a stream of values over time rather than as a series of unique responses to discrete changes in state. This helps keep your logic tidy and frees you from the bugs that plague event handling code with no loss of expressiveness. FRP is useful anywhere the Observer pattern is common, including user interfaces, video games, networking, and industrial applications.
  +
  +
Functional Reactive Programming teaches the concepts and applications of FRP. It begins with a careful walk-through of the FRP core operations and introduces the concepts and techniques you'll need to use FRP in any language. Following easy-to-understand examples, you'll learn both how to use FRP in greenfield applications and how to refactor existing applications. Along the way, the book introduces the basics of functional programming in a just-in-time style, so you never learn anything before you need to use it. When you're finished, you'll be able to use FRP to spend more time adding features and less time fixing problems.
  +
  +
<dt>[[Image:grokking-functional-programming.jpg|frameless|right|70px|Cover]] Aslam Khan: [http://www.manning.com/khan/ <em>Grokking Functional Programming</em>], Paperback / eBook: 425 pages, Manning (September 2015), English, ISBN: 978-1-6172-9183-8
  +
<dd><B>Book Description</B><BR>
  +
Functional programming is more than just writing the same old code in Scala, Clojure, or Haskell. To grok FP—to really get it—you need to rewire your brain to see the world differently. We're here to help you flip the switch. Grokking Functional Programming teaches you first to break down problems in a new way so you can approach them from a FP mindset. Following carefully-selected examples with thorough, carefully-paced explanations, you'll immerse yourself in FP concept by concept. Along the way, exercises, checks for understanding, and even the occasional puzzler give you opportunities to think and practice what you're learning.
  +
  +
Grokking Functional Programming is a practical book. Written especially for object-oriented programmers, it will help you map familiar ideas like objects and inheritance to FP concepts such as programming with immutable data, higher order functions, composing functions, concurrent programming and even the dreaded monad. And you'll be pleased to know that we skip the academic baggage of lambda calculus, category theory, and the mathematical foundations of FP in favor of applying functional programming to everyday programming tasks. At the end of the book, you'll be ready to pick a functional language and start writing useful software.
  +
  +
<dt>[[Image:beginning_haskell.jpg|frameless|right|70px|Cover]] Alejandro Serrano Mena: [http://www.apress.com/9781430262503 <em>Beginning Haskell</em>], Paperback / eBook: 498 pages, Apress (January 2014), English, ISBN: 978-1-43026-250-3
  +
<dd><B>Book Description</B><BR>
  +
Beginning Haskell provides a broad-based introduction to the Haskell language, its libraries and environment, and to the functional programming paradigm that is fast growing in importance in the software industry. The book takes a project-based approach to learning the language that is unified around the building of a web-based storefront. Excellent coverage is given to the Haskell ecosystem and supporting tools. These include the Cabal build tool for managing projects and modules, the HUnit and QuickCheck tools for software testing, the Scotty framework for developing web applications, Persistent and Esqueleto for database access, and also parallel and distributed programming libraries.
  +
  +
<dt>[[Image:Lyah.png|frameless|right|70px|Cover]] Miran Lipovača: [http://www.nostarch.com/lyah.htm <em>Learn You a Haskell for Great Good!</em>], Paperback: 360 pages, No Starch Press (April 2011), English, ISBN: 978-1-59327-283-8
  +
<dd><B>Book Description</B><BR>
  +
It's all in the name: Learn You a Haskell for Great Good! is a hilarious, illustrated guide to this complex functional language. Packed with the author's original artwork, pop culture references, and most importantly, useful example code, this book teaches functional fundamentals in a way you never thought possible.
  +
  +
<dt>[[Image:Programming_in_Haskell.jpg|frameless|right|Cover]] Graham Hutton: [http://www.cs.nott.ac.uk/~gmh/book.html <em>Programming in Haskell</em>], Paperback: 200 pages, Cambridge University Press (January 31, 2007), English, ISBN 0521692695
  +
<dd>
  +
<B>Book Description</B><BR>
  +
Haskell is one of the leading languages for teaching functional
  +
programming, enabling students to write simpler and cleaner code, and to
  +
learn how to structure and reason about programs. This introduction is
  +
ideal for beginners: it requires no previous programming experience and
  +
all concepts are explained from first principles via carefully chosen
  +
examples. Each chapter includes exercises that range from the
  +
straightforward to extended projects, plus suggestions for further
  +
reading on more advanced topics. The author is a leading Haskell
  +
researcher and instructor, well-known for his teaching skills. The
  +
presentation is clear and simple, and benefits from having been refined
  +
and class-tested over several years. The result is a text that can be
  +
used with courses, or for self-learning. Features include: freely
  +
accessible Powerpoint slides for each chapter; solutions to exercises,
  +
and examination questions (with solutions) available to instructors;
  +
downloadable code that's fully compliant with the latest Haskell
  +
release.
  +
  +
  +
<dt>[[Image:Rwh-thumb.png|frameless|right|Cover]] Bryan O'Sullivan, Don Stewart, and John Goerzen: [http://book.realworldhaskell.org/ <em>Real World Haskell</em>], Paperback: 700 pages, O'Reilly, November 2008, English, ISBN-10: 0596514980, ISBN-13: 978-0596514983
  +
<dd>
  +
See ''[[Real World Haskell]]''.
  +
  +
<br>
  +
<dt>[[Image:pcph-thumb.gif|70px|frameless|right|Cover]] Simon Marlow: [http://community.haskell.org/~simonmar/pcph/ <em>Parallel and Concurrent Programming in Haskell</em>], Paperback: 322 pages, O'Reilly, August 2013, English, ISBN-10: 1449335942, ISBN-13: 978-1449335946
  +
<dd>
  +
<B>Book Description</B><BR>
  +
f you have a working knowledge of Haskell, this hands-on book shows you how to use the language’s many APIs and frameworks for writing both parallel and concurrent programs. You’ll learn how parallelism exploits multicore processors to speed up computation-heavy programs, and how concurrency enables you to write programs with threads for multiple interactions.
  +
  +
Author Simon Marlow walks you through the process with lots of code examples that you can run, experiment with, and extend. Divided into separate sections on Parallel and Concurrent Haskell, this book also includes exercises to help you become familiar with the concepts presented:
  +
  +
* Express parallelism in Haskell with the Eval monad and Evaluation Strategies
  +
* Parallelize ordinary Haskell code with the Par monad
  +
* Build parallel array-based computations, using the Repa library
  +
* Use the Accelerate library to run computations directly on the GPU
  +
* Work with basic interfaces for writing concurrent code
  +
* Build trees of threads for larger and more complex programs
  +
* Learn how to build high-speed concurrent network servers
  +
* Write distributed programs that run on multiple machines in a network
  +
  +
<dt>[[Image:HaskellDataAnalysis.png|70px|frameless|right|Cover]] Nishant Shukla: [http://haskelldata.com <em>Haskell Data Analysis Cookbook</em>], Paperback: 334 pages, Packt, June 2014, English, ISBN-10: 1783286334, ISBN-13: 978-1783286331
  +
<dd>
  +
<B>Book Description</B><BR>
  +
This book will take you on a voyage through all the steps involved in data analysis. It provides synergy between Haskell and data modeling, consisting of carefully chosen examples featuring some of the most popular machine learning techniques.
  +
  +
You will begin with how to obtain and clean data from various sources. You will then learn how to use various data structures such as trees and graphs. The meat of data analysis occurs in the topics involving statistical techniques, parallelism, concurrency, and machine learning algorithms, along with various examples of visualizing and exporting results. By the end of the book, you will be empowered with techniques to maximize your potential when using Haskell for data analysis.
  +
  +
The [https://github.com/BinRoot/Haskell-Data-Analysis-Cookbook GitHub public repository] contains over 130 practical recipes to accompany every chapter of the book. Use it as a Swiss Army Knife of algorithms and code snippets. Try a recipe a day, like a kata for your mind.
  +
  +
<DT>[[Image:The_Haskell_School_of_Expression.jpg|frameless|right|Cover]] Paul Hudak: [http://www.cs.yale.edu/homes/hudak/SOE/ <EM>The Haskell School of Expression: Learning Functional Programming through Multimedia</EM>], Cambridge University Press, New York, 2000, 416pp, 15 line diagrams, 75 exercises, Paperback $29.95, ISBN 0521644089, Hardback $74.95, ISBN 0521643384
  +
<dd>
 
<B>Book Description</B><BR>
 
<B>Book Description</B><BR>
 
This book teaches functional programming as a way of thinking and
 
This book teaches functional programming as a way of thinking and
Line 41: Line 125:
 
introduction to functional programming and moves rapidly on to more
 
introduction to functional programming and moves rapidly on to more
 
advanced topics. An underlying theme is the design and implementation
 
advanced topics. An underlying theme is the design and implementation
of domain specific languages, using three examples: FAL (a Functional
+
of <em>domain specific languages</em>, using three examples: FAL (a Functional
 
Animation Language), IRL (an Imperative Robot Language), and MDL (a
 
Animation Language), IRL (an Imperative Robot Language), and MDL (a
 
Music Description Language). Details about programming in Haskell
 
Music Description Language). Details about programming in Haskell
Line 47: Line 131:
 
referred to and found quickly.
 
referred to and found quickly.
   
The book's Web Site contains source files for all programs in the
+
The book's [http://plucky.cs.yale.edu/soe Web Site] contains source files for all programs in the text, as well as the graphics libraries to run them under Windows and Linux platforms. It also contains PowerPoint slides useful for
text, as well as the graphics libraries to run them under Windows and
 
Linux platforms. It also contains PowerPoint slides useful for
 
 
teaching a course using the textbook.
 
teaching a course using the textbook.
  +
</blockquote>
 
  +
*There is a review of SOE on this wiki: [[The Monad.Reader/Issue3/SoE Review]].
<DT>Simon Thompson: [http://www.cs.ukc.ac.uk/people/staff/sjt/craft2e/ <EM>Haskell: The Craft of Functional Programming</EM>], Second Edition,
 
  +
Addison-Wesley, 507&nbsp;pages, paperback, 1999. ISBN
 
  +
<DT>[[Image:The_Craft_of_Functional_Programming.jpg|frameless|right|Cover]] Simon Thompson: [http://www.cs.ukc.ac.uk/people/staff/sjt/craft2e/ <EM>Haskell: The Craft of Functional Programming</EM>], Second Edition, Addison-Wesley, 507&nbsp;pages, paperback, 1999. ISBN 0-201-34275-8.
0-201-34275-8.
 
  +
<dd>
<blockquote>
 
 
<B>Book Description</B><BR>
 
<B>Book Description</B><BR>
 
The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on the process of crafting programs and the text contains many examples and running case studies, as well as advice an program design, testing, problem solving and how to avoid common pitfalls.
 
The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on the process of crafting programs and the text contains many examples and running case studies, as well as advice an program design, testing, problem solving and how to avoid common pitfalls.
Line 70: Line 152:
 
<B>Synopsis</B><BR>
 
<B>Synopsis</B><BR>
 
This books introduces Haskell at a level appropriate for those with little or no prior experience of functional programming. The emphasis is on the process of crafting programs, solving problems, and avoiding common errors.
 
This books introduces Haskell at a level appropriate for those with little or no prior experience of functional programming. The emphasis is on the process of crafting programs, solving problems, and avoiding common errors.
</blockquote>
 
   
<DT>Richard Bird: [http://www.prenhall.com/allbooks/ptr_0134843460.html <EM>Introduction to Functional Programming using Haskell</EM>], 2nd edition, Prentice Hall Press, 1998, 460 pp., ISBN: 0-13-484346-0.
+
<DT>[[Image:Introduction_to_Functional_Programming.jpg|frameless|right|Cover]] Richard Bird: [http://www.prenhall.com/allbooks/ptr_0134843460.html <EM>Introduction to Functional Programming using Haskell</EM>], 2nd edition, Prentice Hall Press, 1998, 460 pp., ISBN 0-13-484346-0.
  +
<dd>
<blockquote>
 
 
From the cover:
 
From the cover:
   
Line 83: Line 164:
   
 
The book is self-contained, assuming no prior knowledge of programming, and is suitable as an introductory undergraduate text for first- or second-year students.
 
The book is self-contained, assuming no prior knowledge of programming, and is suitable as an introductory undergraduate text for first- or second-year students.
</blockquote>
 
   
  +
<DT>Antony Davie: [http://www.cup.org/Titles/25/0521258308.html <EM>An Introduction to Functional Programming Systems Using Haskell</EM>], Cambridge University Press, 1992. ISBN 0-521-25830-8 (hardback). ISBN 0-521-27724-8 (paperback).
 
  +
<DT>[[Image:Introduction_to_Functional_Programming_Systems_Using_Haskell.jpg|frameless|right|Cover]] Antony Davie: [http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=0521277248 <EM>An Introduction to Functional Programming Systems Using Haskell</EM>], Cambridge University Press, 1992. ISBN 0-521-25830-8 (hardback). ISBN 0-521-27724-8 (paperback).
<blockquote>
 
Cover:
+
<dd>Cover:
   
 
Functional programming is a style of programming that has become increasingly popular during the past few years.
 
Functional programming is a style of programming that has become increasingly popular during the past few years.
Line 95: Line 175:
 
This book presents the basic concepts of functional programming, using the language Haskell for examples. The author
 
This book presents the basic concepts of functional programming, using the language Haskell for examples. The author
 
incorporates a discussion of lambda calculus and its relationship with Haskell, exploring the implications for
 
incorporates a discussion of lambda calculus and its relationship with Haskell, exploring the implications for
parallelism. Contents: SASL for Beginners / Examples of SASL Programming / More Advanced Applicative Programming
+
raparallelism. Contents: SASL for Beginners / Examples of SASL Programming / More Advanced Applicative Programming
 
Techniques / Lambda Calculus / The Relationship Between Lambda Calculus and SASL / Program Transformation and
 
Techniques / Lambda Calculus / The Relationship Between Lambda Calculus and SASL / Program Transformation and
 
Efficiency / Correctness, Equivalence and Program Verification / Landin's SECD Machine and Related
 
Efficiency / Correctness, Equivalence and Program Verification / Landin's SECD Machine and Related
Line 101: Line 181:
 
Semantics / Other Applicative Languages / Implications for Parallelism / Functional Programming in Von Neumann
 
Semantics / Other Applicative Languages / Implications for Parallelism / Functional Programming in Von Neumann
 
Languages
 
Languages
</blockquote>
 
   
<DT>Fethi Rabhi and Guy Lapalme: [http://www.iro.umontreal.ca/~lapalme/Algorithms-functional.html <EM> Algorithms: A functional programming approach</EM>],
+
<DT>[[Image:Algorithms_A_Functional_Approach.jpg|frameless|right|Cover]] Fethi Rabhi and Guy Lapalme: [http://www.iro.umontreal.ca/~lapalme/Algorithms-functional.html <EM> Algorithms: A functional programming approach</EM>],
Addison-Wesley, 235&nbsp;pages, paperback, 1999. ISBN
+
Addison-Wesley, 235&nbsp;pages, paperback, 1999. ISBN 0-201-59604-0<BR>
  +
<DD>
0-201-59604-0<BR>
 
<BLOCKQUOTE>
 
 
<B>Book Description</B><BR>
 
<B>Book Description</B><BR>
 
The authors challenge more traditional methods of teaching algorithms
 
The authors challenge more traditional methods of teaching algorithms
Line 130: Line 208:
 
The book is intended for computer science students taking algorithms
 
The book is intended for computer science students taking algorithms
 
and/or (basic or advanced) functional programming courses.
 
and/or (basic or advanced) functional programming courses.
</BLOCKQUOTE>
 
   
<dt>Jeremy Gibbons and Oege de Moor (eds.): [http://www.palgrave.com/catalogue/catalogue.asp?Title_Id=0333992857 <em>The Fun of Programming</em>],Palgrave, 2002, 288 pages. ISBN 0333992857.
+
<dt>[[Image:Fun_of_Programming.jpg|frameless|right|Cover]] Jeremy Gibbons and Oege de Moor (eds.): [http://www.palgrave.com/catalogue/catalogue.asp?Title_Id=0333992857 <em>The Fun of Programming</em>],Palgrave, 2002, 288 pages. ISBN 0333992857.
  +
<dd>
<blockquote>
 
 
<b>Book description:</b><br>
 
<b>Book description:</b><br>
 
In this textbook, leading researchers give tutorial expositions on the current state of the art of functional
 
In this textbook, leading researchers give tutorial expositions on the current state of the art of functional
 
programming. The text is suitable for an undergraduate course immediately following an introduction to
 
programming. The text is suitable for an undergraduate course immediately following an introduction to
 
functional programming, and also for self-study. All new concepts are illustrated by plentiful examples,
 
functional programming, and also for self-study. All new concepts are illustrated by plentiful examples,
as well as exercises. A website gives access to accompanying software.
+
as well as exercises. A [http://web.comlab.ox.ac.uk/oucl/publications/books/fop/ website] gives access to accompanying software.
</blockquote>
 
   
  +
<dt>Simon Peyton Jones: [http://research.microsoft.com/Users/simonpj/Papers/slpj-book-1987/index.htm <em>Implementation of Functional Programming] Language</em>], 500 pages, Prentice-Hall, 1987. ISBN 0134533259.
<dt> Cordelia Hall and John O'Donnell: [http://www.dcs.gla.ac.uk/~jtod/discrete-mathematics/ <em>Discrete Mathematics Using a Computer</em>],
 
  +
<dd>
Springer, 2000, 360 pages. ISBN 1-85233-089-9.
 
  +
This 1987 book is now out of print, but it is now available [http://research.microsoft.com/Users/simonpj/Papers/slpj-book-1987/index.htm online] in its entirety.
<blockquote>
 
<b>Book description:</b><br>
 
This book introduces the main topics of discrete mathematics with a strong emphasis on
 
applications to computer science. It uses computer programs to implement and illustrate
 
the mathematical ideas, helping the reader to gain a concrete understanding of the
 
abstract mathematics. The programs are also useful for practical calculations, and they
 
can serve as a foundation for larger software packages.
 
   
  +
<dt>Simon Peyton Jones, David Lester: [http://www.amazon.com/Implementing-Functional-Languages-Prentice-Hall-International/dp/0137219520/sr=1-1/qid=1162002704/ref=sr_1_1/104-0009163-6568732?ie=UTF8&s=books <em>Implementing Functional Languages</em>], Paperback: 288 pages, Prentice Hall (August 1992), English, ISBN 0137219520 <br>
Designed for first and second year undergraduate students, the book is also ideally suited
 
  +
<dd>
to self-study. No prior knowledge of functional programming is required; the book and
 
the online documentation provide everything you will need.
 
</blockquote>
 
 
<dt>Kees Doets and Jan van Eijck: [http://www.cwi.nl/~jve/HR <em>The Haskell Road to Logic, Maths and Programming</em>]. King's College Publications, London, 2004. ISBN 0-9543006-9-6 (14.00 pounds, $25.00).
 
<blockquote>
 
<b>Book description:</b><br>
 
The purpose of this book is to teach logic and mathematical reasoning
 
in practice, and to connect logical reasoning with computer
 
programming. Throughout the text, abstract concepts are linked to
 
concrete representations in Haskell. Everything one has to know about
 
programming in Haskell to understand the examples in the book is
 
explained as we go along, but we do not cover every aspect of the
 
language. Haskell is a marvelous demonstration tool for logic and
 
maths because its functional character allows implementations to
 
remain very close to the concepts that get implemented, while the
 
laziness permits smooth handling of infinite data structures.
 
 
We do not assume that our readers have previous experience with either
 
programming or construction of formal proofs. We do assume previous
 
acquaintance with mathematical notation, at the level of secondary
 
school mathematics. Wherever necessary, we will recall relevant
 
facts. Everything one needs to know about mathematical
 
reasoning or programming is explained as we go along. We do assume
 
that our readers are able to retrieve software from the Internet and
 
install it, and that they know how to use an editor for constructing
 
program texts.
 
 
After having worked through the material in the book, i.e., after
 
having digested the text and having carried out a substantial number
 
of the exercises, the reader will be able to write interesting
 
programs, reason about their correctness, and document them in a clear
 
fashion. The reader will also have learned how to set up mathematical
 
proofs in a structured way, and how to read and digest mathematical
 
proofs written by others.
 
 
The book can be used as a course textbook, but since it comes with
 
solutions to all exercises (electronically available from the authors
 
upon request) it is also well suited for private study. The source
 
code of all programs discussed in the text, a list of errata,
 
further relevant material and an email link to the authors
 
can be found [http://www.cwi.nl/~jve/HR here].
 
</blockquote>
 
 
<dt>Simon Peyton Jones: <em>Implementation of Functional Programming Language</em>,Prentice-Hall, 1987. ISBN 0134533259.
 
<blockquote></blockquote>
 
 
<dt>Simon Peyton Jones, David Lester: <em>Implementing Functional Languages</em>, 1992.<br>
 
<blockquote>
 
 
The book is out of print. The full sources and a postscript version are
 
The book is out of print. The full sources and a postscript version are
 
[http://research.microsoft.com/Users/simonpj/Papers/papers.html available for free].
 
[http://research.microsoft.com/Users/simonpj/Papers/papers.html available for free].
</blockquote>
 
</DL>
 
   
  +
This book gives a practical approach to understanding the
=Papers available on the Web=
 
  +
implementations of non-strict functional languages using lazy graph
  +
reduction. The emphasis of the book is on building working prototypes of
  +
several functional language implementations (template- instantiation,
  +
G-Machine, TIM, parallel G-Machine. In each case the authors provide a
  +
complete working prototype of a particular implementation, and then lead
  +
the reader through a sequence of improvements which expand its scope.
  +
This enables readers to develop, modify and experiment with their own
  +
implementations and for use as a source of practical laboratory work
  +
material.
   
  +
<dt>[[Image:TTFP.jpg|frameless|right|Cover]] Simon Thompson: [http://www.amazon.com/Functional-Programming-International-Computer-Science/dp/0201416670/sr=1-1/qid=1162002856/ref=sr_1_1/104-0009163-6568732?ie=UTF8&s=books <em>Type Theory and Functional Programming</em>], Addison-Wesley, 1991. ISBN 0-201-41667-0. Hardcover: 388 pages.
==General Introductions to Haskell==
 
  +
<dd>
  +
Now out of print, the original version is available [http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ here].
   
  +
<em>Preface</em>:
;[http://www.haskell.org/tutorial/ A Gentle Introduction to Haskell]
 
  +
Constructive Type theory has been a topic of research interest to computer scientists,
:By Paul Hudak, John Peterson, and Joseph H. Fasel. The title is a bit misleading. Some knowledge of another functional programming language is expected. The emphasis is on the type system and those features which are really new in Haskell (compared to other functional programming languages). A classic.
 
  +
mathematicians, logicians and philosophers for a number of years. For computer scientists it provides
  +
a framework which brings together logic and programming languages in a most elegant and fertile way:
  +
program development and verification can proceed within a single system. Viewed in a different way,
  +
type theory is a functional programming language with some novel features, such as the totality of
  +
all its functions, its expressive type system allowing functions whose result type depends upon the
  +
value of its input, and sophisticated modules and abstract types whose interfaces can contain logical
  +
assertions as well as signature information. A third point of view emphasizes that programs (or
  +
functions) can be extracted from proofs in the logic.
   
  +
<DT>[[Image:Uma_Abordagem_Pratica.jpg|frameless|right|Cover]] Claudio Cesar de Sá and Marcio Ferreira da Silva: <em> Haskell: Uma Abordagem Prática</em>, [http://www.novatec.com.br Novatec Editora Ltda.], 2006, 296 pages, ISBN 85-7522-095-0. The price is R$ 62,00 (in Reais). Language: Portuguese
;[http://www.isi.edu/~hdaume/htut/ Yet Another Haskell Tutorial]
 
  +
<dd>
:By Hal Daume III et al. A recommended tutorial for Haskell that is still under construction but covers already much ground. Also a classic text.
 
  +
This book is being published by Novatec Editora Ltda. You can access directly [http://www.novateceditora.com.br/livros/haskell/ here].
  +
<br>
  +
<b>Book description:</b><br>
  +
This book brings a comprehensive vision of Haskell language. No
  +
knowledge in another functional programming language is expected. In
  +
addition, no background in programming is required. The book presents
  +
issues from basic up to an intermediate level; it also includes some
  +
advanced aspects of Haskell. The title of the book, <em>Haskell: Uma
  +
Abordagem Prática</em>, in English <em>Haskell: A Practical Approach</em>, is the essence of the book. The result is a text that can be used in courses of programming and paradigms languages. Finally, many practical examples can be found throughout the book.
   
  +
An additional page containing comments on this book is found here:
;[http://www-106.ibm.com/developerworks/edu/os-dw-linuxhask-i.html Beginning Haskell]
 
  +
[http://www2.joinville.udesc.br/~coca/index.php/Main/PaginaDoLivroDeHaskell].
:From IBM developerWorks. This tutorial targets programmers of imperative languages wanting to learn about functional programming in the language Haskell. If you have programmed in languages such as C, Pascal, Fortran, C++, Java, Cobol, Ada, Perl, TCL, REXX, JavaScript, Visual Basic, or many others, you have been using an imperative paradigm. This tutorial provides a gentle introduction to the paradigm of functional programming, with specific illustrations in the Haskell 98 language. (Free registration required.)
 
  +
Other data as bibtex entry, cover's book in several formats, Winhugs-2001 for download, and so on. This page is Portuguese.
   
  +
<dt>[[Image:portada.jpg|frameless|right|Cover]] Blas C. Ruiz, Francisco Gutiérrez, Pablo Guerrero y José E. Gallardo. [http://www.lcc.uma.es/~pepeg/pfHaskell/index.html <em>Razonando con Haskell</em>], Thompson 2004. ISBN 84-9732-277-0. Language: Spanish
;[http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html Online Haskell Course]
 
  +
<dd>
:By Ralf Hinze (in German).
 
  +
Descripción El objetivo principal de este libro es el de servir como
  +
libro de texto de las asignaturas de Programación Declarativa
  +
correspondientes a los estudios de Informática o Ciencias de la
  +
Computación, y otras ciencias en general ( Matemáticas, Física, etc.).
  +
El texto es fruto de una larga experiencia docente de los autores dentro
  +
de las distintas asignaturas que desarrollan la Programación Funcional
  +
en distintas titulaciones de la Universidad de Málaga. Aún así, su
  +
lectura no queda condicionada a un conocimiento previo sobre lenguajes
  +
de programación (de computadores), ni sobre Informática. De esta forma,
  +
el libro puede ser utilizado por todo aquel que desee tener un
  +
conocimiento amplio sobre la Programación Funcional.
   
  +
<dt>[[Image:haskell-jp.jpg|frameless|right|Cover]] [http://www.amazon.co.jp/gp/product/4839919623 Haskell Primer: The first functional language to learn]. Jun Mukai. In Japanese. Yen 2,730.
;[http://www.cs.uu.nl/people/jeroen/courses/fp-eng.pdf Functional Programming]
 
  +
<dd>
:By Jeroen Fokker, 1995. (153 pages, 600 KB). Textbook for learning functional programming with Gofer (an older implementation of Haskell). Here without Chapters&nbsp;6 and&nbsp;7.
 
   
  +
<dt>[[Image:Haskell-jp-2.jpg|frameless|right|Cover]] [http://www.amazon.co.jp/gp/product/4797336021 Practical Haskell Programming], Minero Aoki and Nobuo Yamashita. A primer on functional programming for real world programs. In Japanese. Yen 2,940.
;[http://www.cs.chalmers.se/~rjmh/tutorials.html Tutorial Papers in Functional Programming].
 
  +
<dd>
:A collection of links to other Haskell tutorials, from John Hughes.
 
   
  +
<dt>[[Image:Purely_Functional_Data_Structures.jpg|frameless|right|Cover]] [http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=0521663504 Purely Functional Data Structures] [http://www.eecs.usma.edu/webs/people/okasaki/ Chris Okasaki], 232 pp., Cambridge University Press, 1998. ISBN 0-521-63124-6
;[http://www.cs.ou.edu/cs1323h/textbook/haskell.shtml Two Dozen Short Lessons in Haskell]
 
  +
<dd>
:By Rex Page. A draft of a textbook on functional programming, available by ftp. It calls for active participation from readers by omitting material at certain points and asking the reader to attempt to fill in the missing information based on knowledge they have already acquired. The missing information is then supplied on the reverse side of the page.
 
  +
From the cover:<BR/> Most books on data structures assume an imperative language like C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures and data structure design techniques from the point of view of functional languages. It includes code for a wide assortment both of classical data structures and of data structures developed exclusively for functional languages.This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study. [http://www.eecs.usma.edu/webs/people/okasaki/pfds-haskell.tar.gz Haskell source code for the book]
   
  +
<DT>[[Функциональное программирование на языке Haskell]]
;[http://www.cs.chalmers.se/~augustss/AFP/manuals/haskeller.dvi.gz The Little Haskeller]
 
:By Cordelia Hall and John Hughes. 9. November 1993, 26 pages. An introduction using the Chalmers Haskell B interpreter (hbi). Beware that it relies very much on the user interface of hbi which is quite different for other Haskell systems, and the tutorials cover Haskell 1.2 , not Haskell 98.
 
   
  +
<DT>[[Справочник по языку Haskell]]
;[http://pleac.sourceforge.net/pleac_haskell/t1.html PLEAC-Haskell]
 
:Following the Perl Cookbook (by Tom Christiansen and Nathan Torkington, published by O'Reilly) spirit, the PLEAC Project aims to gather fans of programming, in order to implement the solutions in other programming languages.
 
   
  +
<DT>[[Практика работы на языке Haskell]]
;[ftp://ftp.geoinfo.tuwien.ac.at/navratil/HaskellTutorial.pdf Haskell-Tutorial]
 
:By Damir Medak and Gerhard Navratil. The fundamentals of functional languages for beginners.
 
   
  +
<DT>[[14 занимательных эссе о языке Haskell и функциональном программировании]]
;[http://www.reid-consulting-uk.ltd.uk/docs/ffi.html A Guide to Haskell's Foreign Function Interface]
 
:A guide to using the foreign function interface extension, using the rich set of functions in the Foreign libraries, design issues, and FFI preprocessors.
 
   
  +
<dt>
;[http://en.wikibooks.org/wiki/Programming:Haskell Programming Haskell Wikibook]
 
  +
[[Image:Cartea-lui-Dan-Popa-coperta-1.png|frameless|right|Cover]] [http://www.edusoft.ro/detalii.php?id=81 Introducere in Haskell 98 prin exemple ]: Dan Popa, 230 pp., Edusoft Bacau, Romania, (Ian, 31, 2007),Romanian, ISBN 978-973-8934-48-1
:A communal effort by several authors to produce the definitive Haskell textbook. Its very much a work in progress at the moment, and contributions are welcome.
 
  +
<dd><b>De pe coperta</b><BR>
  +
(ro) Cartea este simultan un manual introductiv de Haskell si o carte auxiliara pentru studentii de la cursul de limbaje formale. Veti avea satisfactia cunoasterii unui limbaj modern (...) in care algoritmul de sortare Quicksort se scrie pe 6 randuri, asa cum se poate vedea de altfel si in imaginea de pe coperta I. (...) Cartea cuprinde o serie de capitole folosite la Universitatea Bacau in calitate de auxiliare de laborator la disciplina Limbaje Formale si Automate.
  +
<br>
  +
(en) This book is simultaneosly a manual of Haskell and an auxiliary book for the students of the FLA course (Formal Languges and Automata). You will be satisfied by this modern language,Haskell. Why ? Using Haskell the Quicksort algorithm can be writen on 6 lines (or less), as you can see on the cover. And that's not all ... This book is used at Bacau State University, Romania.
   
  +
</DL>
;[http://video.s-inf.de/#FP.2005-SS-Giesl.(COt).HD_Videoaufzeichnung Video Lectures]
 
:Lectures (in English) by Jürgen Giesl. About 30 hours in total, and great for learning Haskell. The lectures are 2005-SS-FP.V01 through 2005-SS-FP.V26. Videos 2005-SS-FP.U01 through 2005-SS-FP.U11 are exercise answer sessions, so you probably don't want those.
 
   
  +
===Foundations===
;[http://www.cs.utoronto.ca/~trebla/fp/ Albert's Functional Programming Course]
 
:A 15 lesson introduction to most aspects of Haskell.
 
   
  +
<DL>
;[http://www.iceteks.com/articles.php/haskell/1 Introduction to Haskell]
 
  +
<DT>[[Image:TaPL.jpg|frameless|right|Cover]]
:By Chris Dutton, An "attempt to bring the ideas of functional programming to the masses here, and an experiment in finding ways to make it easy and interesting to follow".
 
  +
[http://www.amazon.com/Types-Programming-Languages-Benjamin-Pierce/dp/0262162091/ref=pd_sim_b_4/104-0009163-6568732 Types and Programming Languages] by Benjamin C. Pierce. 645 pages, The MIT Press, (February 1, 2002), English. ISBN 0262162091
  +
<DD>From the cover:<BR>
  +
A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of type systems--and of programming languages from a type-theoretic perspective-has important applications in software engineering, language design, high-performance compilers, and security. This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation, available via the Web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material. The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages.
   
  +
<DT>[[Image:Advanced_TaPL.jpg|frameless|right|Cover]] [http://www.amazon.com/Advanced-Topics-Types-Programming-Languages/dp/0262162288/ref=pd_sim_b_1/104-0009163-6568732 Advanced Topics in Types and Programming Languages] by Benjamin C. Pierce (Editor), Hardcover: 608 pages, The MIT Press (December 23, 2004), Language: English, ISBN 0262162288.<DD>
;[http://www.csc.depauw.edu/~bhoward/courses/0203Spring/csc122/haskintro/ An Introduction to Haskell]
 
  +
From the cover:<BR>
:A brief introduction, by Brian Howard.
 
  +
The study of type systems for programming languages now touches many areas of computer science, from language design and implementation to software engineering, network security, databases, and analysis of concurrent and distributed systems. This book offers accessible introductions to key ideas in the field, with contributions by experts on each topic. The topics covered include precise type analyses, which extend simple type systems to give them a better grip on the run time behavior of systems; type systems for low-level languages; applications of types to reasoning about computer programs; type theory as a framework for the design of sophisticated module systems; and advanced techniques in ML-style type inference. Advanced Topics in Types and Programming Languages builds on Benjamin Pierce's Types and Programming Languages (MIT Press, 2002); most of the chapters should be accessible to readers familiar with basic notations and techniques of operational semantics and type systems -- the material covered in the first half of the earlier book. Advanced Topics in Types and Programming Languages can be used in the classroom and as a resource for professionals. Most chapters include exercises, ranging in difficulty from quick comprehension checks to challenging extensions, many with solutions.
   
  +
<DT>[http://www-2.cs.cmu.edu/~rwh/plbook/ Programming Languages: Theory and Practice] by Robert Harper. (Draft).
;[http://web.syntaxpolice.org/lectures/haskellTalk/slides/index.html Introduction to Haskell]
 
  +
<DD>A working draft of a planned book on the theoretical foundations of practical programming languages.
:By Isaac Jones (2003).
 
   
  +
<DT>[http://homepages.cwi.nl/~jve/cs/ Computational Semantics and Type Theory]
==References==
 
  +
by Jan van Eijck. Draft.
  +
<DD>[http://www.cwi.nl/~jve/cs/cs.pdf Text online].
   
;[http://www.cs.uu.nl/~afie/haskell/tourofsyntax.html Tour of the Haskell Syntax]
+
<DT>[http://www.cs.man.ac.uk/~pt/stable/Proofs+Types.html Proofs and Types]
  +
by Jean-Yves Girard translated and with appendices by Paul Taylor and Yves Lafont.
:By Arjan van IJzendoorn.
 
  +
<DD>
  +
Based on a short graduate course on typed lambda-calculus given at the Universit Paris VII in the autumn term of 1986-7.
   
  +
<DT>[http://www.cs.uu.nl/wiki/Techno/ProgrammingLanguageTheoryTextsOnline Programming language theory texts online]
;[http://zvon.org/other/haskell/Outputglobal/index.html Haskell Reference]
 
  +
<DD>
:By Miloslav Nic.
 
  +
Collection of online programming language theory texts maintained by Frank Atanassow
   
  +
<DT>[http://www.cs.chalmers.se/Cs/Research/Logic/book/ Programming in Martin-Löf's Type Theory: An Introduction] by Bengt Nordström, Kent Petersson and Jan M. Smith. 1990.
;[http://www.cs.uu.nl/~afie/haskell/tourofprelude.html A Tour of the Haskell Prelude]
 
  +
<DD>
:By Bernie Pope and Arjan van IJzendoorn.
 
   
  +
</DL>
;[http://www.cse.unsw.edu.au/~en1000/haskell/inbuilt.html Useful Haskell functions]
 
:An explanation for beginners of many Haskell functions that are predefined in the Haskell Prelude.
 
   
  +
===Monadic Programming===
;[http://haskell.org/ghc/docs/latest/html/libraries/ Documentation for the standard libraries]
 
:Complete documentation of the standard Haskell libraries.
 
   
  +
<DL>
;[http://www.haskell.org/haskellwiki/Category:Idioms Haskell idioms]
 
:A collection of articles describing some common Haskell idioms. Often quite advanced.
 
   
  +
<DT>[[Image:Coperta5.jpg|frameless|right|75px|Haskell - PIM]] [[Practica_interpretarii_monadice|Practical monadic interpretation]] by Dan Popa , Language: Romanian
;[http://www.haskell.org/haskellwiki/Blow_your_mind Useful idioms]
 
:A collection of short, useful Haskell idioms.
 
   
  +
<DD>
;[http://www.haskell.org/haskellwiki/Programming_guidelines Programming guidelines]
 
  +
Foreword of the book (en):
:Some Haskell programming and style conventions.
 
   
  +
I am delighted to introduce this book on the use of monads in Haskell as a way of structuring interpreters. In the early days, Haskell's most distinctive feature was lazy evaluation. Laziness forced us to take a pure approach to input/output, which meant that Haskell's I/O was initially rather weak. This weakness ultimately proved a strength, however, because it led us to the discovery that monads were not just an abstract mathematical concept, but were immediately applicable as a powerful program structuring mechanism.
== Motivation for Using Haskell ==
 
   
  +
Monadic programming is not just to do with input/output: it is much more powerful. That is why I am pleased to see this book, which describes in some detail how to write a language interpreter using a monadic approach.
*[http://www.md.chalmers.se/~rjmh/Papers/whyfp.html <EM>Why Functional Programming Matters</EM>] by [http://www.md.chalmers.se/~rjmh/ John Hughes], The Computer Journal, Vol. 32, No. 2, 1989, pp. 98 - 107. Also in: David A. Turner (ed.): Research Topics in Functional Programming, Addison-Wesley, 1990, pp. 17 - 42.<BR> Exposes the advantages of functional programming languages. Demonstrates how higher-order functions and lazy evaluation enable new forms of modularization of programs.
 
   
  +
In retrospect, the discovery of monads as a practical programming pattern is one of Haskell's most substantial contributions to the world of programming -- and it is one that you will share if you work through this book.
*[[Why Haskell matters]] Discussion of the advantages of using Haskell in particular. An excellent article.
 
   
  +
I am also very happy to see Haskell growing in popularity among our brothers and sisters in Eastern Europe, and in Romania in particular. Enjoy!
*[http://www.cs.ukc.ac.uk/pubs/1997/224/index.html <EM>Higher-order + Polymorphic = Reusable</EM>] by [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. Unpublished, May 1997.<BR> <STRONG>Abstract:</STRONG> This paper explores how certain ideas in object oriented languages have their correspondents in functional languages. In particular we look at the analogue of the iterators of the C++ standard template library. We also give an example of the use of constructor classes which feature in Haskell 1.3 and Gofer.
 
   
  +
Simon P.J.
==Analysis and Design Methods==
 
  +
</DL>
   
  +
===Mathematics===
See [[Analysis and design]] page.
 
   
  +
See [[Books and tutorials/Mathematics]]
   
  +
===Miscellaneous===
== Teaching Haskell ==
 
<UL>
 
<LI>
 
[http://www.cs.ukc.ac.uk/pubs/1997/208/index.html <EM>Where do I begin? A problem solving approach to teaching functional programming</EM>]
 
by [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson].
 
In Krzysztof Apt, Pieter Hartel, and Paul Klint, editors, First International Conference on Declarative Programming Languages in Education. Springer-Verlag, September 1997.
 
<BR>
 
<STRONG>Abstract:</STRONG>
 
This paper introduces a problem solving method for teaching functional programming, based on Polya's `How To Solve It', an introductory investigation of mathematical method. We first present the language independent version, and then show in particular how it applies to the development of programs in Haskell. The method is illustrated by a sequence of examples and a larger case study.
 
   
  +
[[Real World #haskell]]
<LI>
 
[http://www.cs.ukc.ac.uk/pubs/1995/214/index.html <EM>Functional programming through the curriculum</EM>] by
 
[http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]and Steve Hill.
 
In Pieter H. Hartel and Rinus Plasmeijer, editors, Functional Programming
 
Languages in Education, LNCS 1022, pages 85-102. Springer-Verlag, December 1995.
 
<BR>
 
<STRONG>Abstract:</STRONG>
 
This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages.
 
</UL>
 
   
  +
==Joke==
   
  +
<DL>
== Proving Program Correctness ==
 
  +
<dt>[[Image:FunctionalIkamusume.jpg|frameless|right|70px|Cover]] Team "Referential Transparent Sea Keepers": [http://www.paraiso-lang.org/ikmsm/ <em>Functional Ikamusume</em>]
  +
[http://www.paraiso-lang.org/ikmsm/books/index.html <em>book series</em>], Japanese
  +
<dd><B>Book Description</B><BR>
  +
Functional Ikamusume book series provides a forum for researchers, developers, and anime-watchers to publish their latest work, articles, and “mousou (妄想)” on the design, implementations, principles, and uses of functional programming and Ikamusume. The book series covers the entire spectrum of work, from practice to theory, from frank introduction of functional programming to latest research work, from Ikamusume with some functional flavor to functional programming with some Ikamusume flavor. Let’s enjoy writing articles on functional programming in frank “geso” style de-geso!!
   
  +
Past books are written entirely in Japanese, and books are planned to be sold in Japan, but we also accept articles in English. For more information on functional Ikamusume, see the links above (all in Japanese), or ask @xhl_kogitsune or [http://www.paraiso-lang.org/ikmsm/members.html "other members"] on twitter, or xhlkogitsune on Skype. You don’t have to be worried about what is Functional Ikamusume —— she is just Ikamusume who loves functional programming, as you love it.
<UL>
 
<LI>
 
[http://www.cs.ukc.ac.uk/pubs/1992/123/index.html <EM>Formulating Haskell</EM>] by
 
[http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson].
 
Technical Report 29-92*, University of Kent, Computing Laboratory, University of Kent, Canterbury, UK, November 1992.
 
<BR>
 
<STRONG>Abstract:</STRONG>
 
The functional programming language Haskell is examined from the point of view of proving programs correct. Particular features explored include the data type definition facilities, classes, the behaviour of patterns and guards and the monad approach to IO in the Glasgow Haskell compiler.
 
</UL>
 
   
  +
If you are interested in writing Functional Ikamusume articles, please contact xhlkogitsune on Skype or the authors on twitter. You can use Japanese or English for discussion. A text chat room is on Skype, and I’ll invite you to the chat room. While the chat is currently in Japanese, most participants can read/write English.
==Debugging Programs==
 
   
<UL>
+
</DL>
<LI>[http://www.cs.mu.oz.au/~bjpop/thesis.ps.gz <EM>Buddha: A Declarative Debugger for Haskell</EM>] by [http://www.cs.mu.oz.au/~bjpop/ Bernie Pope]. Honours Thesis.
 
<li>[http://www-users.cs.york.ac.uk/~olaf/PUBLICATIONS/frejaHatHood.html <em>Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs</em>] by Olaf Chitil, Colin Runciman and Malcolm Wallace.
 
Proceedings of the 12th International Workshop on Implementation of Functional
 
Languages, 2001.<br>
 
<STRONG>Abstract:</STRONG>
 
In this paper we compare three systems for tracing and debugging Haskell programs: Freja, Hat and Hood. We evaluate their usefulness in
 
practice by applying them to a number of moderately complex programs in which errors had deliberately been introduced. We identify the
 
strengths and weaknesses of each system and then form ideas on how the systems can be improved further.
 
<LI>[http://www.cs.mu.oz.au/~lee/papers/dd.html Papers on declarative debugging]
 
</UL>
 
 
==Using Monads==
 
<UL>
 
<LI>[http://db.ewi.utwente.nl/Publications/PaperStore/db-utwente-0000003696.pdf <EM>The Haskell Programmer's Guide to the IO Monad - Don't Panic.</EM>] Stefan Klinger.<br>
 
This report scratches the surface of category theory, an abstract branch of algebra, just deep enough to find the monad structure. It seems well written.
 
<LI>[http://www.nomaware.com/monads/html/ <EM>All About Monads</EM>] by Jeff Newbern<br>
 
This tutorial aims to explain the concept of a monad and its
 
application to functional programming in a way that is easy to
 
understand and useful to beginning and intermediate Haskell
 
programmers. Familiarity with the Haskell language is assumed, but no
 
prior experience with monads is required.
 
<LI>[http://www.dcs.gla.ac.uk/~nww/Monad.html <EM>What the hell are Monads?</EM>] by Noel Winstanley<BR>
 
A basic introduction to monads, monadic programming and IO.
 
This introduction is presented by means of examples rather than theory, and assumes a little knowledge of
 
Haskell.
 
<LI>[http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm <EM>Monads for the Working Haskell Programmer -- a short tutorial</EM>]
 
by Theodore Norvell.<BR>
 
<LI>[http://www-fp.dcs.st-and.ac.uk/~kh/papers/io-tutorial/io-tutorial.html <EM>Monadic I/O in Haskell 1.3</EM>] by Andrew Gordon and Kevin Hammond.<BR>
 
<STRONG>Abstract:</STRONG>
 
We describe the design and use of monadic I/O in Haskell 1.3, the latest revision of the lazy
 
functional programming language Haskell. Haskell 1.3 standardises the monadic I/O
 
mechanisms now available in many Haskell systems. The new facilities allow fairly sophisticated
 
text-based application programs to be written portably in Haskell. The standard provides
 
implementors with a flexible framework for extending Haskell to incorporate new language
 
features. Apart from the use of monads, the main advances over the previous standard are:
 
character I/O based on handles (analogous to ANSI C file pointers), an error handling
 
mechanism, terminal interrupt handling and a POSIX interface. Apart from a tutorial description
 
of the new facilities we include a worked example: a derived monad for combinator parsing.
 
<!-
 
"http://www.engr.uconn.edu/~jeffm/FuncProg/Papers/monad.html" Monads Made Easy by Ahmed Hammad
 
From the Introduction:
 
This paper is designed to help others who want to know about Monads, but don't want an overly technical
 
explanation. Here I explain the basics, what monads are, what they are good for, and how to employ them. I do this
 
by writing a simple exception handling system in Haskell using these features.
 
->
 
<LI>[http://cm.bell-labs.com/cm/cs/who/wadler/topics/monads.html#monadsdeclare <EM>How to Declare an Imperative</EM>] by [http://cm.bell-labs.com/cm/cs/who/wadler/ Philip Wadler], International Logic Programming Symposium '95, MIT Press, 1995.
 
An extended version will appear in ACM Computing Surveys.<BR>
 
<STRONG>Abstract:</STRONG>
 
This tutorial describes the use of a <em>monad</em> to integrate
 
interaction into a purely declarative language. This technique has
 
been implemented in the higher-order functional language Haskell. A
 
sketch is given of how it might be added to a first-order language for
 
logic programming.
 
 
<LI>[http://cm.bell-labs.com/cm/cs/who/wadler/topics/monads.html#marktoberdorf <EM>Monads for functional programming</EM>] by [http://cm.bell-labs.com/cm/cs/who/wadler/ Philip Wadler], Marktoberdorf Summer School on Program Design Calculi,
 
Springer Verlag, NATO ASI Series F: Computer and systems sciences,
 
Volume 118, August 1992.<BR>
 
<STRONG>Abstract:</STRONG>
 
The use of monads to structure functional programs is described.
 
Monads provide a convenient framework for simulating effects found in
 
other languages, such as global state, exception handling, output, or
 
non-determinism. Three case studies are looked at in detail: how
 
monads ease the modification of a simple evaluator; how monads act as
 
the basis of a datatype of arrays subject to in-place update; and how
 
monads can be used to build parsers.
 
 
<li>[http://www.research.avayalabs.com/user/wadler/topics/monads.html <em>Comprehending monads</em>] by [http://cm.bell-labs.com/cm/cs/who/wadler/ Philip Wadler], Mathematical Structures in Computer Science, Special issue of selected papers from 6'th Conference on Lisp and Functional Programming, 2:461-493, 1992. <br>
 
<strong>Abstract:</strong>
 
Category theorists invented monads in the 1960's to concisely express certain aspects of universal algebra.
 
Functional programmers invented list comprehensions in the 1970's to concisely express certain programs
 
involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad, and
 
how the resulting programming feature can concisely express in a pure functional language some programs
 
that manipulate state, handle exceptions, parse text, or invoke continuations. A new solution to the old
 
problem of destructive array update is also presented. No knowledge of category theory is assumed.
 
 
<LI>[http://cm.bell-labs.com/cm/cs/who/wadler/topics/monads.html#combining-monads <EM>Combining monads</EM>] by [http://cm.bell-labs.com/cm/cs/who/wadler/ Philip Wadler], Glasgow Workshop on Functional Programming, Springer Verlag Workshops in Computing Series,
 
Ayr, July 1992.<BR>
 
<STRONG>Abstract:</STRONG>
 
Monads provide a way of structuring functional programs. Most real
 
applications require a combination of primitive monads. Here we
 
describe how some monads may be combined with others to yield a
 
<em>combined monad</em>.
 
 
<LI>[http://www.cs.nott.ac.uk/Department/Staff/gmh/bib.html#monparsing <EM>Monadic Parser Combinators</EM>] by <A NAME="Hutton&Meijer96 Graham Huttonand Erik Meijer],
 
Technical report NOTTCS-TR-96-4, Department of Computer Science, University of Nottingham, 1996.
 
A condensed version of this report will appear as a functional pearl in JFP.<BR>
 
Besides being a tutorial on parser combinators it is also an introduction to monads in general.
 
 
</UL>
 
 
== Separation of Concerns ==
 
 
Here I mean techniques, paradigms, concepts which can be used for achieving the goals of Aspect Oriented Programming: a powerful separation of concepts.
 
 
I know the title of this section is problemful: even pure lambda calculus can be regarded as a wonderful tool for modularity and reuse. I have thought of concepts like e.g.
 
* arrows
 
* attribute grammars
 
* catamorphisms
 
belonging here. Monads could belong here too, but they have already their special section above. Maybe this section could be titled as ''Other concepts used in Functional Programming concerning Category Theory'', but this title is problemful too from the same reason: pure lambda calculus has also connections to Category Theory. So I have made a separate ''Categorical Programming'' section after this section.
 
 
=== Arrows ===
 
 
<ul>
 
 
<li>
 
Ross Paterson's page on [http://www.haskell.org/arrows/ Arrows: A General Interface to Computation]
 
</li>
 
 
<li>
 
HaWiki's [http://haskell.org/hawiki/UnderstandingArrows UnderstandingArrows]
 
</li>
 
 
</ul>
 
 
=== Attribute Grammars ===
 
 
How can attribute grammars help at the separation of concerns, at things related to the goals of aspect oriented programming? How do they relate to other concepts like monads and arrows?
 
Why are they important for the functional programmer? See Wouter Swierstra's [http://www.haskell.org/tmrwiki/WhyAttributeGrammarsMatter WhyAttributeGrammarsMatter].
 
 
Utrecht University's [http://www.cs.uu.nl/wiki/HUT/AttributeGrammarSystem Attribute Grammar System] tools include also an attribute grammar compiler, UUAGC. The concept of attribute grammar was used in their [http://www.cs.uu.nl/wiki/Ehc/WebHome Essential Haskell Compiler] project, which gives us not only a working programming language, but also a good didactical material about using attribute grammars, e.g. in writing compilers.
 
 
Albeits these materials are self-contained, they reveal that the theory of attribute grammars is related to these concepts:
 
* circular programming
 
* catamorphism
 
The next section contains links (among others) to materials on catamorphisms.
 
And here is a HaWiki page on [http://haskell.org/hawiki/CircularProgramming CircularProgramming].
 
 
== Categorical Programming ==
 
Catamorphisms and related concepts, categorical approach to functional programming, categorical programming. Many materials cited here refer to category theory, so as an introduction to this discipline see the ''Foundations'' section at the end of this page.
 
* Erik Meijer, Maarten Fokkinga, Ross Paterson: [http://citeseer.ist.psu.edu/meijer91functional.html Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire]. See also related documents (in the CiteSeer page). Understanding the article does not require a category theory knowledge -- a self-contained material on the concept of catamorphism, anamoprhism and other related concepts.
 
* Varmo Vene and Tarmo Uustalu: [http://citeseer.ist.psu.edu/vene98functional.html Functional Programming with Apomorphisms / Corecursion]
 
* Varmo Vene: [http://www.cs.ut.ee/~varmo/papers/thesis.pdf Categorical Programming with Inductive and Coinductive Types]. The book accompanies the deep categorical theory topic with Haskell examples.
 
* Tatsuya Hagino: [http://www.tom.sfc.keio.ac.jp/~hagino/thesis.pdf A Categorical Programming Language]
 
* [http://pll.cpsc.ucalgary.ca/charity1/www/home.html Charity], a categorical programming language implementation.
 
* [http://okmij.org/ftp/Haskell/categorical-maxn.lhs Deeply uncurried products, as categorists might like them] article mentions a conjecture: relatedness to [[Combinatory logic]]
 
 
]
 
 
== Side Effects in a Pure Language ==
 
 
<ul>
 
<li>[http://research.microsoft.com/Users/simonpj/papers/marktoberdorf/ <em>Tackling the Awkward Squad: monadic I/O, concurrency, exceptions, and foreign-language calls in Haskell</em>] by Simon Peyton Jones<br>
 
This tutorial focuses on explaining the "bits round the edges" of Haskell programs, rather than the beautiful functional core we all know and love. More specifically, it gives, in a single framework, an account of
 
<ul>
 
<li>monadic input/output (the I/O monad)
 
<li>concurrency (threads, MVars)
 
<li>exceptions (both synchronous and asynchronous)
 
<li>foreign language interfaces
 
</ul>
 
The common feature of all of these is, of course, the ubiquitous I/O monad. All except the first (basic I/O) involve proposed extensions to Haskell that are implemented in GHC, and I have tried hard to make the tutorial use exactly the same function names as GHC does. All of the extensions are described in conference papers (also available from my home page), but these papers are not tutorials, and were written with varying nomenclature over a period of several years. I hope that this tutorial gives a more comprehensible overview of the big picuture, using a common vocabulary.
 
 
</ul>
 
 
 
== Data Structures ==
 
<UL>
 
<LI>[http://www.cs.columbia.edu/~cdo/ Chris Okasaki]: [http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=0521663504 <EM>Purely Functional Data Structures</EM>], 232 pp., Cambridge University Press, 1998. ISBN 0-521-63124-6<BR>
 
From the cover:
 
<BLOCKQUOTE>
 
Most books on data structures assume an imperative language like C or C++. However, data
 
structures for these languages do not always translate well to functional languages such as
 
Standard ML, Haskell, or Scheme. This book describes data structures and data structure
 
design techniques from the point of view of functional languages. It includes code for a wide
 
assortment both of classical data structures and of data structures developed exclusively for
 
functional languages.This handy reference for professional programmers working with functional
 
languages can also be used as a tutorial or for self-study.
 
 
[http://www.cs.columbia.edu/~cdo/pfds-haskell.tar.gz Haskell source code for the book]
 
</BLOCKQUOTE>
 
<LI><EM>[http://www.iis.sinica.edu.tw/~trc/icfp96.ps A probabilistic approach to the problem of automatic selection of data representations]</EM> by
 
Tyng-Ruey Chuang and Wen L. Hwang, In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming, pages 190-200. Philadephia, Pennsylvania, USA, May 1996.
 
</UL>
 
 
<H4>Collections</H4>
 
 
<UL>
 
<LI>[http://www.dcs.gla.ac.uk/fp/workshops/fpw96/Proceedings96.html#PeytonJones <EM>Bulk types with class</EM>] by Simon Peyton Jones, (electronic) proceedings of the 1996 Glasgow Functional Programming Workshop.
 
<BR>
 
<STRONG>Abstract:</STRONG>
 
Bulk types - such as lists, bags, sets, finite maps, and priority queues - are ubiquitous in programming. Yet many languages don't support them well, even though they have received a great deal of attention, especially from the database community. Haskell is currently among the culprits.
 
This paper has two aims: to identify some of the technical difficulties, and to attempt to address them using Haskell's constructor classes.
 
</UL>
 
 
<H4>List-like data structures</H4>
 
 
<UL>
 
<LI><EM>Functional Data Structures</EM> by Chris Okasaki. [http://www.cse.ogi.edu/PacSoft/summerschool96.html <EM>Advanced Functional Programming</EM>], Second International Summer School on Advanced Functional Programming Techniques, Evergreen State College, WA, USA, LNCS 1126, 1996 (editors: J. Launchbury, E. Meijer, T. Sheard), p.&nbsp;131-158.
 
<LI><EM>[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#random-access Purely Functional Random-Access Lists]</EM> by Chris Okasaki. Functional Programming Languages and Computer Architecture, June 1995, pages 86-95.
 
<LI><EM>[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#queues Simple and Efficient Purely Functional Queues and Deques]</EM> by Chris Okasaki. Journal of Functional Programming, 5(4):583-592, October 1995.
 
<LI><EM>[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#priority Optimal Purely Functional Priority Queues]</EM> by Gerth St&oslash;lting Brodal and Chris Okasaki, Journal of Functional Programming, 6(6), December 1996.
 
<LI><EM>[http://www.iis.sinica.edu.tw/~trc/fpca93.ps Real-time deques, multihead Turing machines, and purely functional programming.]</EM> by Tyng-Ruey Chuang and Benjamin Goldberg, In Conference on Functional Programming Languages and Computer Architecture, pages 289-298. Copenhagen, Denmark, June 1993. ACM Press.
 
</UL>
 
 
== Arrays ==
 
<UL>
 
<LI><EM>[http://www.iis.sinica.edu.tw/~trc/lfp94.ps A randomized implementation of multiple functional arrays]</EM> by Tyng-Ruey Chuang, In Proceedings of the 1994 ACM Conference on Lisp and Functional Programming, pages 173-184. Orlando, Florida, USA, June 1994.
 
<LI><EM>Fully persistent arrays for efficient incremental updates and voluminous reads</EM> by Tyng-Ruey Chuang.
 
In Bernd Krieg-Brueckner, editor, 4th European Symposium on Programming,
 
pages 110-129. Rennes, France, February 1992. LNCS 582. Springer-Verlag.
 
</UL>
 
 
== Graphs ==
 
<UL>
 
<LI><EM>Graph Algorithms with a Functional Flavour</EM> by [http://www.cse.ogi.edu/~jl/ John Launchbury], Advanced Functional Programming, First International Spring
 
School on Advanced Functional Programming Techniques, Bastad, Sweden, LNCS 925,p.&nbsp;308-331, 1995 (editors: J. Jeuring, E. Meijer).
 
 
<LI>[http://www.cse.ogi.edu/~jl/biblio-functional.html <EM>Structuring Depth First Search Algorithms in Haskell</EM>] by David King and [http://www.cse.ogi.edu/~jl/ John Launchbury].
 
Proc. ACM Principles of Programming Languages, San Francisco, 1995.<BR>
 
<STRONG>Abstract:</STRONG>
 
Depth-first search is the key to a wide variety of graph algorithms.
 
In this paper we express depth-first search in a lazy functional
 
language, obtaining a linear-time implementation. Unlike traditional
 
imperative presentations, we use the structuring methods of functional
 
languages to construct algorithms from individual reusable components.
 
This style of algorithm construction turns out to be quite amenable to
 
formal proof, which we exemplify through a calculational-style proof
 
of a far from obvious strongly-connected components algorithm.
 
</UL>
 
 
== Others ==
 
 
<UL>
 
<LI>[http://www.dcs.glasgow.ac.uk/jfp/bibliography/References/grantswz1996:143.html <EM>Sparse matrix representations in a functional language</EM>] by P.W. Grant, J.A. Sharp, M.F. Webster and X. Zhang, Journal of Functional Programming, 6(1):143-170, January 1996.<BR>
 
<STRONG>Abstract:</STRONG>
 
This paper investigates several sparse matrix representation schemes and associated algorithms in Haskell for solving linear systems of equations arising from solving realistic computational fluid dynamics problems using a finite element algorithm. This work complements that of Wainwright and Sexton [J. Functional Programming, 2(1):61-72, 1992] in that a Choleski direct solver (with an emphasis on its forward/backward substitution steps) is examined. Experimental evidence comparing time and space efficiency of these matrix representation schemes is reported, together with associated forward/backward substitution implementations. Our results are in general agreement with Wainwright and Sexton's.
 
</UL>
 
 
== Parser Combinators ==
 
 
<UL>
 
<LI><EM>How to Replace Failure by a List of Successes</EM> by <A NAME="Wadler85 Philip Wadler],
 
Functional Programming Languages and Computer Architecture, LNCS 201, 1985.
 
<LI><EM>Higher-order functions for parsing</EM> by <A NAME="Hutton92 Graham Hutton],
 
J. Functional Programming 2(3):323-343, 1992.
 
<LI>[http://www.cs.nott.ac.uk/Department/Staff/gmh/bib.html#monparsing <EM>Monadic Parser Combinators</EM>] by <A NAME="Hutton&Meijer96 Graham Huttonand Erik Meijer],
 
Technical report NOTTCS-TR-96-4, Department of Computer Science, University of Nottingham, 1996.
 
A condensed version of this report will appear as a functional pearl in JFP.<BR>
 
Besides being a tutorial on parser combinators it is also an introduction to monads in general.
 
<LI><EM>Functional Parsers</EM> by <A NAME="Fokker95 Jeroen Fokker],
 
First International Spring School on Advanced Functional Programming Techniques, LNCS 925, 1995.
 
<LI><EM>Predictive parser combinators need four values to report errors</EM> by <A NAME="Partridge&Wright96 Andrew Partridge, David Wright],
 
J. Functional Programming 6(2): 355-364, 1996.
 
<LI><EM>Combinators for parsing expressions</EM> by <A NAME="Hill96 Steve Hill],
 
J. Functional Programming 6(3):445-463, May 1996.
 
<LI>[http://www.cse.ogi.edu/PacSoft/summerschool96.html#Parsers <EM>Deterministic, Error-Correcting Combinator Parsers</EM>]
 
by <A NAME="Swierstra&Duponcheel96 S. Doaitse Swierstra and Luc Duponcheel], Second International Summer School on Advanced Functional Programming Techniques, LNCS 1126, 1996.
 
</UL>
 
 
==Schools on Advanced Funtional Programming==
 
 
<EM>Advanced Functional Programming</EM>, First International Spring
 
School on Advanced Functional Programming Techniques, Bastad, Sweden, LNCS 925, Springer-Verlag, 1995 (editors: J. Jeuring, E. Meijer).
 
*<EM>Functional Parsers</EM> by Jeroen Fokker, p.&nbsp;1-23.
 
*<EM>Monads for functional programming</EM> by Philip Wadler, p.&nbsp;24-52.
 
*<EM>The Design of a Pretty-printing Library</EM> by John Hughes, p.&nbsp;52-96.
 
*<EM>Functional Programming with Overloading and Higher-Order Polymorphism</EM>, Mark P. Jones, p.&nbsp;97-136.
 
*<EM>Programming with Fudgets</EM> by Thomas Hallgren and Magnus Carlsson, p.&nbsp;137-182.
 
*<EM>Constructing Medium Sized Efficient Functional Programs in Clean</EM> by Marko C.J.D. van Eekelen and Rinus J. Plasmeijer, p.&nbsp;183-227.
 
*<EM>Merging Monads and Folds for Functional Programming</EM> by Erik Meijer and Johan Jeuring, p.&nbsp;228-266.
 
*<EM>Programming with Algebras</EM> by Richard B. Kieburtz and Jeffrey Lewis, p.&nbsp;267-307.
 
*<EM>Graph Algorithms with a Functional Flavour</EM> by John Launchbury, p.&nbsp;308-331.
 
 
 
[http://www.cse.ogi.edu/PacSoft/conf/summerschool96.html <EM>Advanced Functional Programming</EM>], Second International Summer School on Advanced Functional Programming Techniques, Evergreen State College, WA, USA, LNCS 1126, Springer-Verlag, 1996 (editors: J. Launchbury, E. Meijer, T. Sheard).
 
*<EM>Composing the User Interface with Haggis</EM> by Sigbjorn Finne and Simon Peyton Jones, p.&nbsp;1-37.
 
*<EM>Haskore Music Tutorial</EM> by Paul Hudak, p.&nbsp;38-67.
 
*<EM>Polytypic Programming</EM> by Johan Jeuring and Patrick Jansson, p.&nbsp;68-114.
 
*<EM>Implementing Threads in Standard ML</EM> by Peter Lee, p.&nbsp;115-130.
 
*<EM>Functional Data Structures</EM> by Chris Okasaki, p.&nbsp;131-158.
 
*<EM>Heap Profiling for Space Efficiency</EM> by Colin Runciman and Niklas R&ouml;jemo, p.&nbsp;159-183.
 
*<EM>Deterministic, Error-Correcting Combinator Parsers</EM> by S. Doaitse Swierstra and Luc Duponcheel, p.&nbsp;184-207.
 
*<EM>Essentials of Standard ML Modules</EM> by Mads Tofte, p.&nbsp;208-238.
 
 
[http://alfa.di.uminho.pt/~afp98/ Advanced Functional Programming, Third International School, AFP'98],
 
in Braga, Portugal from 12th to 19th September 1998, LNCS 1608, Springer-Verlag, 1999
 
(editors: D. Swierstra, P. Henriques and J. Oliveira).<BR>
 
All lecture notes and further material are available from the web site.
 
 
 
= Foundations =
 
<ul>
 
<li>Paul Taylor: [http://www.dcs.qmul.ac.uk/~pt/Practical_Foundations/ Practical Foundations of Mathematics]<br>
 
Cambridge University Press, ISBN: 0-521-63107-6, xii+576 pages, September 2000.
 
<li>Michael Barr and Charles Wells: [http://www.cwru.edu/artsci/math/wells/pub/ttt.html Toposes, Triples and Theories]<br>
 
The revised version of their
 
formerly Springer Verlag published book is
 
online for free download. Note that they use the name <em>triple</em> instead of <em>monad</em>.
 
</ul>
 

Revision as of 06:51, 24 September 2015

Books covering many aspects of Haskell.

Language and library definition

James Church:
Cover
Learning Haskell Data Analysis, Paperback: 198 pages, Packt, May 2015, English, ISBN-10: 1-784-39470-7, ISBN-13: 9781784394707
Book Description
This book provides you with the skills to handle large amounts of data, even if that data is in a less than perfect state. Each chapter in the book helps to build a small library of code that will be used to solve a problem for that chapter. The book starts with creating databases out of existing datasets, cleaning that data, and interacting with databases within Haskell in order to produce charts for publications. It then moves towards more theoretical concepts that are fundamental to introductory data analysis, but in a context of a real-world problem with real-world data. As you progress in the book, you will be relying on code from previous chapters in order to help create new solutions quickly. By the end of the book, you will be able to manipulate, find, and analyze large and small sets of data using your own Haskell libraries.
Cover

Simon Peyton Jones: "Haskell 98 language and libraries: the Revised Report", Cambridge University Press, 2003, Hardback, 272 pages, ISBN 0521826144, £45.00

Book Description
Haskell is the world's leading lazy functional programming language, widely used for teaching, research, and applications. The language continues to develop rapidly, but in 1998 the community decided to capture a stable snapshot of the language: Haskell 98. All Haskell compilers support Haskell 98, so practitioners and educators alike have a stable base for their work. This book constitutes the agreed definition of the Haskell 98, both the language itself and its supporting libraries. It has been considerably revised and refined since the original definition, and appears in print for the first time. It should be a standard reference work for anyone involved in research, teaching, or application of Haskell. The entire language definition is also available online: Language and library specification.

Textbooks

Cover
Debasish Ghosh: Functional and Reactive Domain Modeling, Paperback / eBook: 325 pages, Manning (September 2015), English, ISBN: 978-1-6172-9224-8
Book Description
Functional and Reactive Domain Modeling teaches you how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. You will start with the basics of functional programming and gradually progress to the advanced concepts and patterns that you need to know to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types, typeclass based design, and isolation of side-effects can make your model compose for readability and verifiability. On the subject of reactive modeling, the book focuses on higher order concurrency patterns like actors and futures. It uses the Akka framework as the reference implementation and demonstrates how advanced architectural patterns like event sourcing and CQRS can be put to great use in implementing scalable models. You will learn techniques that are radically different from the standard RDBMS based applications that are based on mutation of records. You'll also pick up important patterns like using asynchronous messaging for interaction based on non blocking concurrency and model persistence, which delivers the speed of in-memory processing along with suitable guarantees of reliability.
Cover
Stephen Blackheath and Anthony Jones: Functional Reactive Programming, Paperback / eBook: 245 pages, Manning (September 2015), English, ISBN: 978-1-6334-3010-5
Book Description
Functional Reactive Programming (FRP) is an alternative to the Observer pattern that's designed to deal with events as a stream of values over time rather than as a series of unique responses to discrete changes in state. This helps keep your logic tidy and frees you from the bugs that plague event handling code with no loss of expressiveness. FRP is useful anywhere the Observer pattern is common, including user interfaces, video games, networking, and industrial applications. Functional Reactive Programming teaches the concepts and applications of FRP. It begins with a careful walk-through of the FRP core operations and introduces the concepts and techniques you'll need to use FRP in any language. Following easy-to-understand examples, you'll learn both how to use FRP in greenfield applications and how to refactor existing applications. Along the way, the book introduces the basics of functional programming in a just-in-time style, so you never learn anything before you need to use it. When you're finished, you'll be able to use FRP to spend more time adding features and less time fixing problems.
Cover
Aslam Khan: Grokking Functional Programming, Paperback / eBook: 425 pages, Manning (September 2015), English, ISBN: 978-1-6172-9183-8
Book Description
Functional programming is more than just writing the same old code in Scala, Clojure, or Haskell. To grok FP—to really get it—you need to rewire your brain to see the world differently. We're here to help you flip the switch. Grokking Functional Programming teaches you first to break down problems in a new way so you can approach them from a FP mindset. Following carefully-selected examples with thorough, carefully-paced explanations, you'll immerse yourself in FP concept by concept. Along the way, exercises, checks for understanding, and even the occasional puzzler give you opportunities to think and practice what you're learning. Grokking Functional Programming is a practical book. Written especially for object-oriented programmers, it will help you map familiar ideas like objects and inheritance to FP concepts such as programming with immutable data, higher order functions, composing functions, concurrent programming and even the dreaded monad. And you'll be pleased to know that we skip the academic baggage of lambda calculus, category theory, and the mathematical foundations of FP in favor of applying functional programming to everyday programming tasks. At the end of the book, you'll be ready to pick a functional language and start writing useful software.
Cover
Alejandro Serrano Mena: Beginning Haskell, Paperback / eBook: 498 pages, Apress (January 2014), English, ISBN: 978-1-43026-250-3
Book Description
Beginning Haskell provides a broad-based introduction to the Haskell language, its libraries and environment, and to the functional programming paradigm that is fast growing in importance in the software industry. The book takes a project-based approach to learning the language that is unified around the building of a web-based storefront. Excellent coverage is given to the Haskell ecosystem and supporting tools. These include the Cabal build tool for managing projects and modules, the HUnit and QuickCheck tools for software testing, the Scotty framework for developing web applications, Persistent and Esqueleto for database access, and also parallel and distributed programming libraries.
Cover
Miran Lipovača: Learn You a Haskell for Great Good!, Paperback: 360 pages, No Starch Press (April 2011), English, ISBN: 978-1-59327-283-8
Book Description
It's all in the name: Learn You a Haskell for Great Good! is a hilarious, illustrated guide to this complex functional language. Packed with the author's original artwork, pop culture references, and most importantly, useful example code, this book teaches functional fundamentals in a way you never thought possible.
Cover
Graham Hutton: Programming in Haskell, Paperback: 200 pages, Cambridge University Press (January 31, 2007), English, ISBN 0521692695
Book Description
Haskell is one of the leading languages for teaching functional programming, enabling students to write simpler and cleaner code, and to learn how to structure and reason about programs. This introduction is ideal for beginners: it requires no previous programming experience and all concepts are explained from first principles via carefully chosen examples. Each chapter includes exercises that range from the straightforward to extended projects, plus suggestions for further reading on more advanced topics. The author is a leading Haskell researcher and instructor, well-known for his teaching skills. The presentation is clear and simple, and benefits from having been refined and class-tested over several years. The result is a text that can be used with courses, or for self-learning. Features include: freely accessible Powerpoint slides for each chapter; solutions to exercises, and examination questions (with solutions) available to instructors; downloadable code that's fully compliant with the latest Haskell release.
Cover
Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell, Paperback: 700 pages, O'Reilly, November 2008, English, ISBN-10: 0596514980, ISBN-13: 978-0596514983
See Real World Haskell.
Cover
Simon Marlow: Parallel and Concurrent Programming in Haskell, Paperback: 322 pages, O'Reilly, August 2013, English, ISBN-10: 1449335942, ISBN-13: 978-1449335946
Book Description
f you have a working knowledge of Haskell, this hands-on book shows you how to use the language’s many APIs and frameworks for writing both parallel and concurrent programs. You’ll learn how parallelism exploits multicore processors to speed up computation-heavy programs, and how concurrency enables you to write programs with threads for multiple interactions. Author Simon Marlow walks you through the process with lots of code examples that you can run, experiment with, and extend. Divided into separate sections on Parallel and Concurrent Haskell, this book also includes exercises to help you become familiar with the concepts presented:
  • Express parallelism in Haskell with the Eval monad and Evaluation Strategies
  • Parallelize ordinary Haskell code with the Par monad
  • Build parallel array-based computations, using the Repa library
  • Use the Accelerate library to run computations directly on the GPU
  • Work with basic interfaces for writing concurrent code
  • Build trees of threads for larger and more complex programs
  • Learn how to build high-speed concurrent network servers
  • Write distributed programs that run on multiple machines in a network
Cover
Nishant Shukla: Haskell Data Analysis Cookbook, Paperback: 334 pages, Packt, June 2014, English, ISBN-10: 1783286334, ISBN-13: 978-1783286331
Book Description
This book will take you on a voyage through all the steps involved in data analysis. It provides synergy between Haskell and data modeling, consisting of carefully chosen examples featuring some of the most popular machine learning techniques. You will begin with how to obtain and clean data from various sources. You will then learn how to use various data structures such as trees and graphs. The meat of data analysis occurs in the topics involving statistical techniques, parallelism, concurrency, and machine learning algorithms, along with various examples of visualizing and exporting results. By the end of the book, you will be empowered with techniques to maximize your potential when using Haskell for data analysis. The GitHub public repository contains over 130 practical recipes to accompany every chapter of the book. Use it as a Swiss Army Knife of algorithms and code snippets. Try a recipe a day, like a kata for your mind.
Cover
Paul Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge University Press, New York, 2000, 416pp, 15 line diagrams, 75 exercises, Paperback $29.95, ISBN 0521644089, Hardback $74.95, ISBN 0521643384
Book Description
This book teaches functional programming as a way of thinking and problem solving, using Haskell, the most popular purely functional language. Rather than using the conventional mathematical examples commonly found in other programming language textbooks, the author draws examples from multimedia applications, including graphics, animation, and computer music, thus rewarding the reader with working programs for inherently more interesting applications. Aimed at both beginning and advanced programmers, this tutorial begins with a gentle introduction to functional programming and moves rapidly on to more advanced topics. An underlying theme is the design and implementation of domain specific languages, using three examples: FAL (a Functional Animation Language), IRL (an Imperative Robot Language), and MDL (a Music Description Language). Details about programming in Haskell are presented in boxes throughout the text so they can be easily referred to and found quickly. The book's Web Site contains source files for all programs in the text, as well as the graphics libraries to run them under Windows and Linux platforms. It also contains PowerPoint slides useful for teaching a course using the textbook.
Cover
Simon Thompson: Haskell: The Craft of Functional Programming, Second Edition, Addison-Wesley, 507 pages, paperback, 1999. ISBN 0-201-34275-8.
Book Description
The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on the process of crafting programs and the text contains many examples and running case studies, as well as advice an program design, testing, problem solving and how to avoid common pitfalls. Building on the strengths of the first edition, the book includes many new and improved features:
  • Complete coverage of Haskell 98, the standard version of Haskell which will be stable and supported by implementations for years to come.
  • An emphasis on software engineering principles, encouraging a disciplined approach to building reusable libraries of software components.
  • Detailed coverage of the Hugs interpreter with an appendix covering other implementations.
  • A running case study of pictures emphasizes the built-in functions which appear in the standard prelude and libraries. It is also used to give an early preview of some of the more complex language features, such as high-order functions.
  • List comprehensions and the standard functions over lists are covered before recursion.
  • Early coverage of polymorphism supporting the "toolkit" approach and encouraging the resuse of built-in functions and types.
  • Extensive reference material containing details of further reading in books, journals and on the World Wide Web.
  • Accompanying Web Site supporting the book, containing all the program code, further teaching materials and other useful resources.
Synopsis
This books introduces Haskell at a level appropriate for those with little or no prior experience of functional programming. The emphasis is on the process of crafting programs, solving problems, and avoiding common errors.
Cover
Richard Bird: Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall Press, 1998, 460 pp., ISBN 0-13-484346-0.
From the cover: After the success of the first edition, Introduction to Functional Programming using Haskell has been thoroughly updated and revised to provide a complete grounding in the principles and techniques of programming with functions. The second edition uses the popular language Haskell to express functional programs. There are new chapters on program optimisation, abstract datatypes in a functional setting, and programming in a monadic style. There are completely new case studies, and many new exercises. As in the first edition, there is an emphasis on the fundamental techniques for reasoning about functional programs, and for deriving them systematically from their specifications. The book is self-contained, assuming no prior knowledge of programming, and is suitable as an introductory undergraduate text for first- or second-year students.
Cover
Antony Davie: An Introduction to Functional Programming Systems Using Haskell, Cambridge University Press, 1992. ISBN 0-521-25830-8 (hardback). ISBN 0-521-27724-8 (paperback).
Cover: Functional programming is a style of programming that has become increasingly popular during the past few years. Applicative programs have the advantage of being almost immediately expressible as functional descriptions; they can be proved correct and transformed through the referential transparency property. This book presents the basic concepts of functional programming, using the language Haskell for examples. The author incorporates a discussion of lambda calculus and its relationship with Haskell, exploring the implications for raparallelism. Contents: SASL for Beginners / Examples of SASL Programming / More Advanced Applicative Programming Techniques / Lambda Calculus / The Relationship Between Lambda Calculus and SASL / Program Transformation and Efficiency / Correctness, Equivalence and Program Verification / Landin's SECD Machine and Related Implementations / Further Implementation Techniques / Special Purpose Hardware / The Applicative Style of Semantics / Other Applicative Languages / Implications for Parallelism / Functional Programming in Von Neumann Languages
Cover
Fethi Rabhi and Guy Lapalme: Algorithms: A functional programming approach,

Addison-Wesley, 235 pages, paperback, 1999. ISBN 0-201-59604-0

Book Description
The authors challenge more traditional methods of teaching algorithms by using a functional programming context, with Haskell as an implementation language. This leads to smaller, clearer and more elegant programs which enable the programmer to understand the algorithm more quickly and to use that understanding to explore alternative solutions.
Key features:
  • Most chapters are self-contained and can be taught independently from each other.
  • All programs are in Haskell'98 and provided on a WWW site.
  • End of chapter exercises throughout.
  • Comprehensive index and bibliographical notes.
Synopsis
The book is organised as a classic algorithms book according to topics such as Abstract Data Types, sorting and searching. It uses a succession of practical programming examples to develop in the reader problem-solving skills which can be easily transferred to other language paradigms. It also introduces the idea of capturing algorithmic design strategies (e.g. Divide-and-Conquer, Dynamic Programming) through higher-order functions.
Target audience
The book is intended for computer science students taking algorithms and/or (basic or advanced) functional programming courses.
Cover
Jeremy Gibbons and Oege de Moor (eds.): The Fun of Programming,Palgrave, 2002, 288 pages. ISBN 0333992857.
Book description:
In this textbook, leading researchers give tutorial expositions on the current state of the art of functional programming. The text is suitable for an undergraduate course immediately following an introduction to functional programming, and also for self-study. All new concepts are illustrated by plentiful examples, as well as exercises. A website gives access to accompanying software.
Simon Peyton Jones: Implementation of Functional Programming Language], 500 pages, Prentice-Hall, 1987. ISBN 0134533259.
This 1987 book is now out of print, but it is now available online in its entirety.
Simon Peyton Jones, David Lester: Implementing Functional Languages, Paperback: 288 pages, Prentice Hall (August 1992), English, ISBN 0137219520
The book is out of print. The full sources and a postscript version are available for free. This book gives a practical approach to understanding the implementations of non-strict functional languages using lazy graph reduction. The emphasis of the book is on building working prototypes of several functional language implementations (template- instantiation, G-Machine, TIM, parallel G-Machine. In each case the authors provide a complete working prototype of a particular implementation, and then lead the reader through a sequence of improvements which expand its scope. This enables readers to develop, modify and experiment with their own implementations and for use as a source of practical laboratory work material.
Cover
Simon Thompson: Type Theory and Functional Programming, Addison-Wesley, 1991. ISBN 0-201-41667-0. Hardcover: 388 pages.
Now out of print, the original version is available here. Preface: Constructive Type theory has been a topic of research interest to computer scientists, mathematicians, logicians and philosophers for a number of years. For computer scientists it provides a framework which brings together logic and programming languages in a most elegant and fertile way: program development and verification can proceed within a single system. Viewed in a different way, type theory is a functional programming language with some novel features, such as the totality of all its functions, its expressive type system allowing functions whose result type depends upon the value of its input, and sophisticated modules and abstract types whose interfaces can contain logical assertions as well as signature information. A third point of view emphasizes that programs (or functions) can be extracted from proofs in the logic.
Cover
Claudio Cesar de Sá and Marcio Ferreira da Silva: Haskell: Uma Abordagem Prática, Novatec Editora Ltda., 2006, 296 pages, ISBN 85-7522-095-0. The price is R$ 62,00 (in Reais). Language: Portuguese
This book is being published by Novatec Editora Ltda. You can access directly here.
Book description:
This book brings a comprehensive vision of Haskell language. No knowledge in another functional programming language is expected. In addition, no background in programming is required. The book presents issues from basic up to an intermediate level; it also includes some advanced aspects of Haskell. The title of the book, Haskell: Uma Abordagem Prática, in English Haskell: A Practical Approach, is the essence of the book. The result is a text that can be used in courses of programming and paradigms languages. Finally, many practical examples can be found throughout the book. An additional page containing comments on this book is found here: [1]. Other data as bibtex entry, cover's book in several formats, Winhugs-2001 for download, and so on. This page is Portuguese.
Cover
Blas C. Ruiz, Francisco Gutiérrez, Pablo Guerrero y José E. Gallardo. Razonando con Haskell, Thompson 2004. ISBN 84-9732-277-0. Language: Spanish
Descripción El objetivo principal de este libro es el de servir como libro de texto de las asignaturas de Programación Declarativa correspondientes a los estudios de Informática o Ciencias de la Computación, y otras ciencias en general ( Matemáticas, Física, etc.). El texto es fruto de una larga experiencia docente de los autores dentro de las distintas asignaturas que desarrollan la Programación Funcional en distintas titulaciones de la Universidad de Málaga. Aún así, su lectura no queda condicionada a un conocimiento previo sobre lenguajes de programación (de computadores), ni sobre Informática. De esta forma, el libro puede ser utilizado por todo aquel que desee tener un conocimiento amplio sobre la Programación Funcional.
Cover
Haskell Primer: The first functional language to learn. Jun Mukai. In Japanese. Yen 2,730.
Cover
Practical Haskell Programming, Minero Aoki and Nobuo Yamashita. A primer on functional programming for real world programs. In Japanese. Yen 2,940.
Cover
Purely Functional Data Structures Chris Okasaki, 232 pp., Cambridge University Press, 1998. ISBN 0-521-63124-6
From the cover:
Most books on data structures assume an imperative language like C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures and data structure design techniques from the point of view of functional languages. It includes code for a wide assortment both of classical data structures and of data structures developed exclusively for functional languages.This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study. Haskell source code for the book
Функциональное программирование на языке Haskell
Справочник по языку Haskell
Практика работы на языке Haskell
14 занимательных эссе о языке Haskell и функциональном программировании
Cover
Introducere in Haskell 98 prin exemple : Dan Popa, 230 pp., Edusoft Bacau, Romania, (Ian, 31, 2007),Romanian, ISBN 978-973-8934-48-1
De pe coperta
(ro) Cartea este simultan un manual introductiv de Haskell si o carte auxiliara pentru studentii de la cursul de limbaje formale. Veti avea satisfactia cunoasterii unui limbaj modern (...) in care algoritmul de sortare Quicksort se scrie pe 6 randuri, asa cum se poate vedea de altfel si in imaginea de pe coperta I. (...) Cartea cuprinde o serie de capitole folosite la Universitatea Bacau in calitate de auxiliare de laborator la disciplina Limbaje Formale si Automate.
(en) This book is simultaneosly a manual of Haskell and an auxiliary book for the students of the FLA course (Formal Languges and Automata). You will be satisfied by this modern language,Haskell. Why ? Using Haskell the Quicksort algorithm can be writen on 6 lines (or less), as you can see on the cover. And that's not all ... This book is used at Bacau State University, Romania.

Foundations

Cover

Types and Programming Languages by Benjamin C. Pierce. 645 pages, The MIT Press, (February 1, 2002), English. ISBN 0262162091

From the cover:
A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of type systems--and of programming languages from a type-theoretic perspective-has important applications in software engineering, language design, high-performance compilers, and security. This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation, available via the Web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material. The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages.
Cover
Advanced Topics in Types and Programming Languages by Benjamin C. Pierce (Editor), Hardcover: 608 pages, The MIT Press (December 23, 2004), Language: English, ISBN 0262162288.

From the cover:
The study of type systems for programming languages now touches many areas of computer science, from language design and implementation to software engineering, network security, databases, and analysis of concurrent and distributed systems. This book offers accessible introductions to key ideas in the field, with contributions by experts on each topic. The topics covered include precise type analyses, which extend simple type systems to give them a better grip on the run time behavior of systems; type systems for low-level languages; applications of types to reasoning about computer programs; type theory as a framework for the design of sophisticated module systems; and advanced techniques in ML-style type inference. Advanced Topics in Types and Programming Languages builds on Benjamin Pierce's Types and Programming Languages (MIT Press, 2002); most of the chapters should be accessible to readers familiar with basic notations and techniques of operational semantics and type systems -- the material covered in the first half of the earlier book. Advanced Topics in Types and Programming Languages can be used in the classroom and as a resource for professionals. Most chapters include exercises, ranging in difficulty from quick comprehension checks to challenging extensions, many with solutions.

Programming Languages: Theory and Practice by Robert Harper. (Draft).
A working draft of a planned book on the theoretical foundations of practical programming languages.
Computational Semantics and Type Theory by Jan van Eijck. Draft.
Text online.
Proofs and Types by Jean-Yves Girard translated and with appendices by Paul Taylor and Yves Lafont.
Based on a short graduate course on typed lambda-calculus given at the Universit Paris VII in the autumn term of 1986-7.
Programming language theory texts online
Collection of online programming language theory texts maintained by Frank Atanassow
Programming in Martin-Löf's Type Theory: An Introduction by Bengt Nordström, Kent Petersson and Jan M. Smith. 1990.

Monadic Programming

Haskell - PIM
Practical monadic interpretation by Dan Popa , Language: Romanian
Foreword of the book (en): I am delighted to introduce this book on the use of monads in Haskell as a way of structuring interpreters. In the early days, Haskell's most distinctive feature was lazy evaluation. Laziness forced us to take a pure approach to input/output, which meant that Haskell's I/O was initially rather weak. This weakness ultimately proved a strength, however, because it led us to the discovery that monads were not just an abstract mathematical concept, but were immediately applicable as a powerful program structuring mechanism. Monadic programming is not just to do with input/output: it is much more powerful. That is why I am pleased to see this book, which describes in some detail how to write a language interpreter using a monadic approach. In retrospect, the discovery of monads as a practical programming pattern is one of Haskell's most substantial contributions to the world of programming -- and it is one that you will share if you work through this book. I am also very happy to see Haskell growing in popularity among our brothers and sisters in Eastern Europe, and in Romania in particular. Enjoy! Simon P.J.

Mathematics

See Books and tutorials/Mathematics

Miscellaneous

Real World #haskell

Joke

Cover
Team "Referential Transparent Sea Keepers": Functional Ikamusume

book series, Japanese

Book Description
Functional Ikamusume book series provides a forum for researchers, developers, and anime-watchers to publish their latest work, articles, and “mousou (妄想)” on the design, implementations, principles, and uses of functional programming and Ikamusume. The book series covers the entire spectrum of work, from practice to theory, from frank introduction of functional programming to latest research work, from Ikamusume with some functional flavor to functional programming with some Ikamusume flavor. Let’s enjoy writing articles on functional programming in frank “geso” style de-geso!! Past books are written entirely in Japanese, and books are planned to be sold in Japan, but we also accept articles in English. For more information on functional Ikamusume, see the links above (all in Japanese), or ask @xhl_kogitsune or "other members" on twitter, or xhlkogitsune on Skype. You don’t have to be worried about what is Functional Ikamusume —— she is just Ikamusume who loves functional programming, as you love it. If you are interested in writing Functional Ikamusume articles, please contact xhlkogitsune on Skype or the authors on twitter. You can use Japanese or English for discussion. A text chat room is on Skype, and I’ll invite you to the chat room. While the chat is currently in Japanese, most participants can read/write English.