Haskell Now
Please see our Code of Conduct and our Outreach Resources and Follow us on Twitter
Overview
This is a community of people helping the next generation of students learn programming through Functional Programming, and to help current developers improve their skills both at programming, table de 11 multiplication and at managing diversity. Check out our Learning Resources page for help getting started with Haskell!
Join the Community
IRC: #lambdanow on freenode
Reading
Here is some Reading on learning Functional Programming.
Join our Software_Foundations reading group!
Research
ICFP 2014: videos, papers, and more
Projects
NOTE: All projects adhere to the Contributor Covenant.
Haskell Web Development
We're writing a book on using Haskell for web development. The first book will cover building a simple Wiki with JavaScript? widgets and in-memory storage. The next volume will cover databases and persistence. There will likely be several volumes.
LOGO-Like
A beginning and intermediate programming environment based very deeply on LOGO, with the addition of the affordances modern hardware allows.
The core of the language is an artist robot. This robot can respond to basic commands as issued, or it can save them in list that can be passed around to other commands, much like the original LOGO. The environment will be extended to three dimensions in intermediate lessons.
The idea is to build this language as a Haskell DSL, and then evaluate that DSL on demand as permitted. The evaluation could take place in a simulator window, which would represent the robot carrying out the commands, including corrections required by physics, or by an actual flying robot with pens on a field of paper.
In another optional window would be a “telemetry” display, showing the physical state of the robots various components, such as motor speeds, position, velocity, calculated paths, and pen commands, and possibly even a first-person view from the robot camera. In an interactive setting with a real robot it would be pretty amazing to see the other people in the room as the robot’s camera scans them.
SICP for Haskell
Another idea is porting SICP to Haskell, and also extending it to gradually introduce type theory. First we’d start off leaning entirely on type inference, and then slowly expand examples to include type signatures and advanced type concepts.
Code of Conduct
Haskell Now! is dedicated to providing a harassment-free community for everyone, regardless of gender or anything to do with it (identity, history, expression, non-binary gender, etc.), sexual orientation, disability, physical appearance, body size, race, religion, and programming background. We do not tolerate harassment of community participants in any form, and sexual language and imagery is not appropriate for any community activity. Community participants violating these rules may be sanctioned or expelled from the community at the discretion of the community organizers. Any money paid to the community or any activities associated with the community is forfeit on expulsion.
Harassment includes offensive comments related to gender or anything to do with it (identity, history, expression, non-binary gender, etc.), sexual orientation, disability, physical appearance, body size, race, religion, programming experience or background, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of community activities, spaces, or other events, inappropriate physical contact, and unwelcome sexual attention. Participants asked to stop any harassing behavior are expected to comply immediately.
All participants in the community and community-associated activities are also subject to the anti-harassment policy. In particular, participants should not use sexualized images, activities, or other material. Staff (including volunteers) should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment.
If a participant engages in harassing behavior, the community organizers may take any action they deem appropriate, including warning the offender or expulsion from the community.
If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of the community staff immediately. Community staff can be identified and summoned by typing "@where ops" in channel.
Community staff will be happy to help participants contact local law enforcement or otherwise assist those experiencing harassment to feel safe. We value your participation.
We expect participants to follow these rules at all community venues (including online venues) and social events associated with the community.
For any questions or with any concerns at all, please contact our Channel Operators.
This CoC was adapted from Geek Feminism, and is available under a CC-BY-SA license.
Reading: Software Foundations
Welcome to the Software Foundations reading group! Let's read together and learn about proving things.
Preface (Sept. 04 - Sept. 11)
Set up your environment
Play with the Coq prover
Learn the very basic bits
Chapter 1: Basics: Functional Programming in Coq (Sep. 11 - Sep. 18)
Learn about Coq types
Write simple proofs over Boolean operators
Learn about Fixpoints and structural recursion
Chapter 2: Induction: Proof by Induction (Sep. 18 - Oct. 2)
What is induction?
How do we apply it to form proofs?
Bonus: read up to section 2.7 (not including 2.7) in Dependently Typed Programming in Agda
Chapter 3: Lists: Working with Structured Data (Oct. 3 - Oct. 9)
How to reason about structured data
Error handling with Options
Dictionaries
Supplemental Reading
Appel's Verified Functional Algorithms
Leroy's Mechanized Semantics
Learning Resources
Functional Programming
Would Extraterrestrials Use Functional Programming (Talk)
Online books
Real World Haskell (Bryan O'Sullivan, Don Stewart, John Goerzen, 2008)
Errata: What's Outdated in Real World Haskell?
The Haskell Wikibook
The Haskell School of Music – From Signals to Symphonies (Paul Hudak, 2012)
Online courses
CS 1501 "Introduction to Haskell" lectures (Nishant Shukla, University of Virginia)
CS240h "Functional Systems in Haskell" lecture notes and Haskell resources (David Mazières, Bryan O'Sullivan,
Stanford Secure Computer Systems group)
FP Complete's School of Haskell
Tutorials
"Streaming Huffman Compression in Haskell" (Justin Le)
Mini-tutorial on ST and STRef (Piet Delport)
Parsing (Piet Delport)
General learning resources
The Haskell wiki's Learning Haskell portal
ReinH's Recommended Reading Material list
What I Wish I Knew When Learning Haskell 2.1 (Stephen Diehl)
grsmv's big list of Haskell bookmarks
dohaskell: a tagged Haskell learning resources index
Haskell exercises
Exercism
"Learn Haskell with exercism.io", a review by Bob Ippolito
List of similar challenge, puzzle, and exercise websites, maintained by Exercism
Haskell Now team on Exercism
Ninety-Nine Haskell Problems (inspired by Ninety-Nine Lisp Problems and Ninety-Nine Prolog Problems)
Haskell Quiz (inspired by Ruby Quiz)
Daily Haskell Exercise
Opqdonut's Haskell Exercises (with automatic tests)
Purity
Purely Functional I/O (Rúnar Bjarnason)
What is a Purely Functional Language?? (Amr Sabry)
Outreach Resources
Diversity
As an outreach group, we strive to bring in people normally excluded from tech. As such, our main focus is on finding ways to improve that situation with teaching methods, guidelines, and opportunities to learn. We do offer links below for more background on the problems faced by women, minorities, and LGBT people in tech.
General Outreach
So You Want to be An Ally
Silencing Tactics
On Fighting for Marginalized People in Tech
Notallmen/Yesallwomen, secondary trauma and relearning everything for the sake of not killing each other
(This essay is couched in terms of feminism, but has really important things to say about activism, trauma, and
listening that are of broad utility to would-be allies of ANY marginalized groups.)
Profiling the kyriarchy: allies
Derailing For Dummies (better cached version, reconstruction) - A tongue-in-cheek "guide" to conversational
derailing, from a perspective of privilege. Use this to become of aware of these patterns in your own
conversation, and as an educational resource for allies who unintentionally commit these.
Social Awareness
Anger as a Tool in Social Justice Movements
Ableism/Language
Anti-Racism 101
White Privilege: Unpacking the Invisible Knapsack
(a seminal essay written by Peggy McIntosh more than 25 years ago!)
Racism 101 at Resist Racism
Required Reading by The Angry Black Woman
Racism 101 for Clueless White People, Written by a Slightly Less Clueless White Person
Why ‘Reverse Racism’ Isn’t Real
18 Things White People Should Know/Do Before Discussing Racism
Five Stages of Unlearning Racism: Life as I Know It
Feminism 101
Feminism 101 at GeekFeminism
Feminism 101 at Shakesville
Finally, a Feminism 101 Blog
What Misogyny Is
Not All Men are Like That
Intersectionality 101
Intersectionality at GeekFeminism
Intersectionality at Wikipedia
Privilege (Comic)
Conference-Related Resources
Model Anti-Harassment Policy
Code of Conduct Examples
So you want to put on a diverse, inclusive conference
How to Ensure a Diverse Tech Event
(The slide deck at the top is missing, but scroll down for a number of excellent links and resources.)
Online Harassment
Online Harassment, Defamation, and Hateful Speech: A Primer of the Legal Landscape (PDF Download)
A Cyberharassment Reading List
Strong suggestions for structurally combatting online harassment
Presenting FP and Haskell
Letter to a Young Haskell Enthusiast (Gershom Bazerman, The Comonad.Reader, 2014) This is a well-written and timeless essay about communicating and sharing your passion with openness and integrity, rather than becoming a victim of ego and alienating people unintentionally.