The mission of Type Classes is threefold:

  • to share why we like using Haskell and Nix and how we use it;
  • to normalize (or de-esotericize, if we may) functional programming and make it accessible to anyone who wants to learn;
  • to increase the diversity of people who feel welcome in the Haskell and Nix communities.

For our products, diversity means we try to serve as wide a variety of lives and backgrounds as we can.

  • Some want to make games, some want to make webapps, some don’t care to produce software at all;
  • Some have formal education; some don’t; some haven’t been in a math class in a long time;
  • Some live and breathe programming full-time, some work nine to five; some learn in very limited free time;
  • Some approach Haskell in a casual and capricious way; some want to know everything in depth.

Whoever you are, there should be resources accessible to you. We don’t believe that any subject has only a single path or a single goal.


We liken events and discussion forums to dinner parties, with the moderators as hosts and participants as guests. When a guest exhibits unwarranted hostility, it is the hosts’ responsibility to help them find their coat. The hosts – in this case, your moderators Chris and Julie – will want to make all guests feel as welcome and comfortable as possible. When someone is making other guests uncomfortable or creating an environment which makes some people uncomfortable, it’s time for that person to pack it up and go home.

It doesn’t necessarily mean the guest will never be invited back; everyone has bad days. But we take it that when people have just had bad days and been called out for it, they recognize they behaved badly and sincerely apologize. Doubling down, becoming sarcastic or defensive, and interpreting the complaint as an attack on your character are bad faith responses and will ensure you aren’t invited to the next party.

To this end, we will ask The Contributor Covenant FAQ includes some excellent discussion of why our own values imply that we have particular expectations of others. people who

  • insult other guests, whether explicitly or via passive-aggressive comments about people like them;
  • make unnecessary sexual comments or use sexual language;
  • make comments about other people’s intelligence or competence when they make a mistake or don’t know something;
  • can’t take “no” for an answer

to figuratively get their coats and leave.

Private and quasi-public harassment

We are well aware that the worst harassment and abuse often occurs in private or across enough forums that it is rarely detectable by individuals who are not the target and plausibly deniable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of us. We know that there are some broken stairs in the Haskell community. Please tell us if someone that we’ve learned to subtly avoid is doing more harm than we had realized; we’ll listen.

Some specific encouragements

There is a lot that could be said on the subject of good conduct. Here we name only a few things that pertain directly to our particular communities of interest.

Stay on-topic. The ability to stick to the topic should eliminate well-actually’s, which are usually not integral to the main topic. The right way to correct minor points is typically by repeating the part of the conversation that has incorrect information but with the correct information. Often this can be done without even telling someone that they said something wrong. Most people want to be correct and accurate and providing them that information will usually be welcomed, but, as with most things, couching it as an attack will more likely make them defensive. Furthermore, the topic at hand is almost certainly not sex or anything to do with it, anyone’s perceived IQ, For more tips on how staying on-topic can improve clarity, we recommend A Case Study in Not Being A Jerk in Open Source by Gary Bernhardt. or the thing you wish we were talking about instead of the thing we are actually talking about.

Value the social aspects of technology. Some decisions are part technical and part social, and the social parts are not less important. Some examples of social discussions that are also important technically include discussions about naming, about discoverability, about readability, and especially about how people learn and understand information. Decision making in almost all aspects of life involves much more than facts; humans do not and cannot make decisions based on fact alone. We make decisions based on our values, desires, goals, and beliefs; when making technical decisions, all of those things are still involved. There is no such thing as a purely technical decision. Hence, discussions of readability and ease of learning, for example, are a crucial part of many technical decisions – and they are, it should go without saying, especially important given the explicit mission of Type Classes.