Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quchen/articles
Miscellaneous articles. The readme is the table of contents.
https://github.com/quchen/articles
articles haskell hindley-milner tutorials
Last synced: 20 days ago
JSON representation
Miscellaneous articles. The readme is the table of contents.
- Host: GitHub
- URL: https://github.com/quchen/articles
- Owner: quchen
- Created: 2013-02-07T18:52:10.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2023-07-12T09:28:11.000Z (over 1 year ago)
- Last Synced: 2024-05-09T23:01:26.752Z (6 months ago)
- Topics: articles, haskell, hindley-milner, tutorials
- Language: Haskell
- Homepage:
- Size: 8.07 MB
- Stars: 1,239
- Watchers: 76
- Forks: 94
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-github-repos - quchen/articles - Miscellaneous articles. The readme is the table of contents. (Haskell)
README
[Quchen][q]'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][alg-blindness] is about how algebraic data types
sometimes make Boolean Blindness even more complex.
- [The `build` function explained][build], which is an important piece in a
popular optimization technique
- [The `Cont` monad explained][cont]
- [Some lazy IO pitfalls][crazy-io]
- [The `fix` function][fix], one possible fundamental building block of
recursion
- [**F**requently **B**rought **U**p **T**opics in Freenode's #haskell
channel][fbut]
- [Basic Haskell functions written in easily comprehensible
notation.][comprehensible] Nice for explaining e.g. `sequence`.
- [What I thought was cool about Haskell some time ago.][great] I should
update this one day.
- [Equality table of Haskell values.][equality] [(live version)][equality-live]
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][fixing-warnings]
- [My Haskell code style][haskell-style] and the rationale behind it
- [Informal description of class instances][instances] gives non-technical
descriptions of various common class instances.
- [An extensive tutorial on the Hindley-Damas-Milner type inference algorithm][hindley-milner]
- [Lens infix operators cheat sheet][lens-infix] provides an overview of what
the individual symbols in infix operators of the [lens][lens] library stand
for.
- [Löb/Möb][loeb] is about an interesting, simple, complicated and quirky
recursive function.
- [Reader instance derived][reader] shows how to write the usual `Reader`
monad instance starting from something readable and comprehensible.
- [The second `Functor` law is redundant][functor-law]
- [Tag, don't `type`][tag-dont-type] is about avoiding `type` synonyms, and
using `Data.Tagged` instead.
- [How to write unmaintainable Haskell][unmaintain], inspired by
[How to write unmaintainable code][unmaintain-org]
- [Useful techniques][useful] I've found over the years and haven't seen
described elsewhere
- [Write yourself a Brainfuck in an hour][bf-tut] implements a very simple
[Brainfuck][bf] interpreter in Haskell, with plenty of room to go on
afterwards.
- [Make macros mean something – readable backwards compatibility with
CPP][cpp-semantic-macros] talks about how to define readable macro synonyms
for writing backwards compatible libraries.
- [`zipWith const`][zipWithConst] is my favorite Haskell function### Proposals
- [Applicative-Monad proposal (AMP)][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][law-rules] wasn't proosed yet
- The MonadFail proposal is a proposal similar to the AMP, with the goal of
removing `fail` from the `Monad` typeclass.- [Original text][fail]
- [Update after one week of discussion.][fail_update1][bf]: https://en.wikipedia.org/wiki/Brainfuck
[lens]: http://hackage.haskell.org/package/lens
[q]: https://github.com/quchen/articles
[unmaintain-org]: https://www.thc.org/root/phun/unmaintain.html[alg-blindness]: algebraic-blindness.md
[amp]: applicative_monad.md
[bf-tut]: write_yourself_a_brainfuck.md
[build]: build.md
[comprehensible]: functions_comprehensible.md
[cont]: cont_monad.md
[cpp-semantic-macros]: haskell-cpp-compatibility.md
[crazy-io]: crazy_io.md
[equality-live]: http://htmlpreview.github.io/?https://github.com/quchen/articles/blob/master/haskell-equality-table.html
[equality]: haskell-equality-table.html
[fail_update1]: monad_fail_update1.md
[fail]: monad_fail.md
[fbut]: fbut.md
[fix]: fix.md
[fixing-warnings]: fixing-warnings.md
[functor-law]: second_functor_law.md
[great]: great_things_about_haskell.md
[haskell-style]: haskell_style.md
[hindley-milner]: hindley-milner/README.md
[instances]: instances.md
[law-rules]: law-rules.md
[lens-infix]: lens-infix-operators.md
[loeb]: loeb-moeb.md
[reader]: reader_instance_derived.md
[seqm-proposal]: seqm_proposal.md
[tag-dont-type]: tag-dont-type.md
[unmaintain]: unmaintainable_haskell.md
[useful]: useful_techniques.md
[zipWithConst]: 2018-11-22_zipWith_const.md