This document took inspiration from the Berlin's FP Group
We will work through Haskell Programming from First Principles (aka the "Haskell Book") by Christopher Allen and Julie Moronuki. The only prerequisites for participating are this book, a computer, and your person. An open mind is also recommended. No prior experience with Haskell, functional programming, or coding in general is required.
To prepare for your first visit, please do the following:
Purchase your own copy of the book. You will need your own copy on your own machine so you can work with the PDF and your terminal open side-by-side. This book was independently researched, written, and published by two Haskell developers working in their spare time to support education in functional programming. As a member of our strong and supportive community, we know you are too committed to the spirit of pure actions to "borrow" someone else's copy. They typeset it with LaTeX: give them a break!
Install Stack, the Haskell project development tool. If you are familiar with package managers like npm, pip, and apt, Stack is similar. You needn't show up already an expert, but do at least learn the basics. If you want to know everything, though, you could watch this video. The most important thing: whatever you do, do not install the Haskell Platform.
Set up a project environment for your practice code, and familiarize yourself with GHC and GHCi. You don't need to do much more than create a directory for your code and make sure you know how to run the GHC compiler on your source files and GHCi when you need a REPL.
Participants in the study group will be expected to model and reinforce a culture of accountability. This entails everyone abiding by the norms of a supportive and rigorous classroom environment. Each week, you should complete the following tasks:
- Do all the reading.
- Type in all the code.
- Attempt all the exercises.
- Optional: Meet with a study partner to discuss your work, it is likely you will keep at it if you hold yourself accountable to a particular person.
These expectations are not meant to make your life miserable but to provide a framework for your success. If you actually want to learn Haskell, consistency is the key—as with anything else. Since we'll be learning Haskell together in this group, it is essential that you work through each chapter on your own first so that you come to each group meeting prepared, knowing what you need help with and what you understand well enough to teach others. If you get stuck on a problem, keep moving, but do not just skip the exercises entirely.
For the sake of emphasis: do not skip the exercises!
If you are a complete beginner to programming or for whatever reason have trouble installing Haskell on your computer, don't worry about it! Come to the study group, and we'll help you figure it out. Fortunately, you don't even need a computer to work through Chapter 1—just pen, paper, and patience. So make sure you at least do that much, even if you require tech support.
Conduct of code
By participating in this study group, you implicitly agree to conduct your coding as follows:
You will purchase your own copy of the Haskell Book. Anyone suspected of using an illegal copy will be removed from the group immediately.
Each week, prior to the group meeting, you will complete the assigned reading and attempt to complete the coding exercises to the best of your ability. If you do not make a genuine effort to complete your work, for whatever reason, you will not be permitted to join the group discussion that week. Participants who fail to complete their assignments twice in a row or three times total, or who are otherwise not making a good faith effort to keep up with the course schedule, may be asked to leave the group. If you find yourself struggling with the exercises, you should seek help at the meetings, from your study partner, or online.
Participants who consistently miss meetings or RSVP without showing up will be removed from the group. If you cannot make it to a meeting, change your status on the meetup event as soon as possible. You can come to future events as long as you are up to date with the content.
In addition to the above, all study group participants are expected to make their best effort at being decent human beings. Participants whose behavior strays too far or too often beyond the reasonable boundaries of respect, kindness, and collegiality may be removed from the group at the discretion of the organizers.
There will be two (2) cohorts running at the same time, the first one will work through chapters 1–10 of the Haskell Book, while the second will work from chapters 10-20; all over the course of 8 weeks, meeting for about one hour and half each week. We may extend or re-schedule meetings to cover more chapters if there is enthusiasm for doing so and the coaches are available.
This is not a class, however, so do not come expecting a lecture. Instead, you will have the opportunity to review your work and to discuss concepts and exercises that gave you difficulty when working through the book on your own.
You are encouraged to hew as closely to this regular, weekly schedule as you are able so as to maintain your momentum. That said, if life gets in the way, so be it: but do your best to catch up, and avoid skipping any material as each chapter builds on the last. We can always discuss exercises on the #hffp-workshop channel at the YVRDev Slack, but please refrain from posting solutions publicly (including on GitHub).
All meetings will be announced on Meetup and Slack. You must RSVP to attend each meeting separately, as space is at a premium. If you cannot attend a meeting because it is full, please continue to work on your own, and come to a future meeting. Do not RSVP if you cannot attend. No-shows will not be allowed to attend subsequent meetings.
The workshops are going to take place in HootSuite HQ every Monday from 6:30 pm to 8:00 pm starting on February 5th, 2018. The schedule will be published on meetup events of the VanFP meetup every week.
The following are useful websites, educational supplements, and other reference materials pertinent to learning functional programming and working with Haskell. Submit a pull request to add more.
- What Makes Haskell Unique - Initial introduction to Haskell benefits
- Haskell at work - Screencast with tutorials on Real World Haskell development
- How I Start: Haskell - how to set-up a new Haskell project
- Haskell Language Home Page - your portal to the Haskell universe (preferred to haskell.org)
- Stackage - search for Haskell modules or functions (Google has a hard time deciphering the funny operators, so use this instead)
- Haskell is easy - a curated list of Haskell libraries
- What I Wish I Knew When Learning Haskell - a curated list of tips and concepts to do Haskell on production settings
- #haskell and #haskell-beginners - IRC channels on freenode
- Haskell on reddit
- Haskell on Stack Overflow