Quchen's articles
This repository is filled with articles I have written and needed online for various reasons. Below is a short summary of the articles available publically. The repository may contain files not mentioned below, in which case they're probably unfinished or otherwise not worth reading at this point.
- Algebraic blindness is about how algebraic data types sometimes make Boolean Blindness even more complex.
- The
build
function explained, which is an important piece in a popular optimization technique - The
Cont
monad explained - Some lazy IO pitfalls
- The
fix
function, one possible fundamental building block of recursion - Frequently Brought Up Topics in Freenode's #haskell channel
- Basic Haskell functions written in easily comprehensible
notation. Nice for explaining e.g.
sequence
. - What I thought was cool about Haskell some time ago. I should update this one day.
- Equality table of Haskell values. (live version)
Created in a time where it seemed to be en vogue to create tables for the
==
operator in various languages. Spoiler, it's terribly boring, because it should be. - How to fix, or avoid fixing, certain warnings
- My Haskell code style and the rationale behind it
- Informal description of class instances gives non-technical descriptions of various common class instances.
- An extensive tutorial on the Hindley-Damas-Milner type inference algorithm
- Lens infix operators cheat sheet provides an overview of what the individual symbols in infix operators of the lens library stand for.
- Löb/Möb is about an interesting, simple, complicated and quirky recursive function.
- Reader instance derived shows how to write the usual
Reader
monad instance starting from something readable and comprehensible. - The second
Functor
law is redundant - Tag, don't
type
is about avoidingtype
synonyms, and usingData.Tagged
instead. - How to write unmaintainable Haskell, inspired by How to write unmaintainable code
- Useful techniques I've found over the years and haven't seen described elsewhere
- Write yourself a Brainfuck in an hour implements a very simple Brainfuck interpreter in Haskell, with plenty of room to go on afterwards.
- Make macros mean something – readable backwards compatibility with CPP talks about how to define readable macro synonyms for writing backwards compatible libraries.
zipWith const
is my favorite Haskell function
-
Applicative-Monad proposal (AMP) is the original text of the 2013 Applicative-Monad proposal, which was the starting point for Applicative becoming a superclass of Monad in GHC 7.10.
-
Rules for typeclass laws wasn't proosed yet
-
The MonadFail proposal is a proposal similar to the AMP, with the goal of removing
fail
from theMonad
typeclass.