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.
Haskell related
General, tutorials
- 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
Proposals
-
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.