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.