{"id":13622281,"url":"https://github.com/quchen/articles","last_synced_at":"2025-04-06T12:09:16.985Z","repository":{"id":6830918,"uuid":"8079216","full_name":"quchen/articles","owner":"quchen","description":"Miscellaneous articles. The readme is the table of contents.","archived":false,"fork":false,"pushed_at":"2023-07-12T09:28:11.000Z","size":8466,"stargazers_count":1259,"open_issues_count":0,"forks_count":92,"subscribers_count":76,"default_branch":"master","last_synced_at":"2025-03-30T10:09:26.994Z","etag":null,"topics":["articles","haskell","hindley-milner","tutorials"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quchen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-02-07T18:52:10.000Z","updated_at":"2025-03-01T17:46:52.000Z","dependencies_parsed_at":"2024-05-30T04:34:30.042Z","dependency_job_id":"3e98b9a0-7bc2-49e4-a7db-3e659e07c458","html_url":"https://github.com/quchen/articles","commit_stats":{"total_commits":430,"total_committers":33,"mean_commits":"13.030303030303031","dds":0.09534883720930232,"last_synced_commit":"1f33a89776f11e03873ba4fc5a81b90bd50eb342"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Farticles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Farticles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Farticles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Farticles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quchen","download_url":"https://codeload.github.com/quchen/articles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478323,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["articles","haskell","hindley-milner","tutorials"],"created_at":"2024-08-01T21:01:17.196Z","updated_at":"2025-04-06T12:09:16.956Z","avatar_url":"https://github.com/quchen.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"[Quchen][q]'s articles\n=================\n\nThis repository is filled with articles I have written and needed online for\nvarious reasons. Below is a short summary of the articles available publically.\nThe repository may contain files not mentioned below, in which case they're\nprobably unfinished or otherwise not worth reading at this point.\n\n\n\nHaskell related\n---------------\n\n\n\n### General, tutorials\n\n- [Algebraic blindness][alg-blindness] is about how algebraic data types\n  sometimes make Boolean Blindness even more complex.\n- [The `build` function explained][build], which is an important piece in a\n  popular optimization technique\n- [The `Cont` monad explained][cont]\n- [Some lazy IO pitfalls][crazy-io]\n- [The `fix` function][fix], one possible fundamental building block of\n  recursion\n- [**F**requently **B**rought **U**p **T**opics in Freenode's #haskell\n  channel][fbut]\n- [Basic Haskell functions written in easily comprehensible\n  notation.][comprehensible] Nice for explaining e.g. `sequence`.\n- [What I thought was cool about Haskell some time ago.][great] I should\n  update this one day.\n- [Equality table of Haskell values.][equality] [(live version)][equality-live]\n  Created in a time where it seemed to be en vogue to create tables for the `==`\n  operator in various languages. Spoiler, it's terribly boring, because it\n  should be.\n- [How to fix, or avoid fixing, certain warnings][fixing-warnings]\n- [My Haskell code style][haskell-style] and the rationale behind it\n- [Informal description of class instances][instances] gives non-technical\n  descriptions of various common class instances.\n- [An extensive tutorial on the Hindley-Damas-Milner type inference algorithm][hindley-milner]\n- [Lens infix operators cheat sheet][lens-infix] provides an overview of what\n  the individual symbols in infix operators of the [lens][lens] library stand\n  for.\n- [Löb/Möb][loeb] is about an interesting, simple, complicated and quirky\n  recursive function.\n- [Reader instance derived][reader] shows  how to write the usual `Reader`\n  monad instance starting from something readable and comprehensible.\n- [The second `Functor` law is redundant][functor-law]\n- [Tag, don't `type`][tag-dont-type] is about avoiding `type` synonyms, and\n  using `Data.Tagged` instead.\n- [How to write unmaintainable Haskell][unmaintain], inspired by\n  [How to write unmaintainable code][unmaintain-org]\n- [Useful techniques][useful] I've found over the years and haven't seen\n  described elsewhere\n- [Write yourself a Brainfuck in an hour][bf-tut] implements a very simple\n  [Brainfuck][bf] interpreter in Haskell, with plenty of room to go on\n  afterwards.\n- [Make macros mean something – readable backwards compatibility with\n  CPP][cpp-semantic-macros] talks about how to define readable macro synonyms\n  for writing backwards compatible libraries.\n- [`zipWith const`][zipWithConst] is my favorite Haskell function\n\n\n\n### Proposals\n\n- [Applicative-Monad proposal (AMP)][amp] is the original text of the 2013\n  Applicative-Monad proposal, which was the starting point for Applicative\n  becoming a superclass of Monad in GHC 7.10.\n- [Rules for typeclass laws][law-rules] wasn't proosed yet\n- The MonadFail proposal is a proposal similar to the AMP, with the goal of\n  removing `fail` from the `Monad` typeclass.\n\n    - [Original text][fail]\n    - [Update after one week of discussion.][fail_update1]\n\n\n\n\n\n\n[bf]: https://en.wikipedia.org/wiki/Brainfuck\n[lens]: http://hackage.haskell.org/package/lens\n[q]: https://github.com/quchen/articles\n[unmaintain-org]: https://www.thc.org/root/phun/unmaintain.html\n\n[alg-blindness]:    algebraic-blindness.md\n[amp]:              applicative_monad.md\n[bf-tut]:           write_yourself_a_brainfuck.md\n[build]:            build.md\n[comprehensible]:   functions_comprehensible.md\n[cont]:             cont_monad.md\n[cpp-semantic-macros]: haskell-cpp-compatibility.md\n[crazy-io]:         crazy_io.md\n[equality-live]:    http://htmlpreview.github.io/?https://github.com/quchen/articles/blob/master/haskell-equality-table.html\n[equality]:         haskell-equality-table.html\n[fail_update1]:     monad_fail_update1.md\n[fail]:             monad_fail.md\n[fbut]:             fbut.md\n[fix]:              fix.md\n[fixing-warnings]:  fixing-warnings.md\n[functor-law]:      second_functor_law.md\n[great]:            great_things_about_haskell.md\n[haskell-style]:    haskell_style.md\n[hindley-milner]:   hindley-milner/README.md\n[instances]:        instances.md\n[law-rules]:        law-rules.md\n[lens-infix]:       lens-infix-operators.md\n[loeb]:             loeb-moeb.md\n[reader]:           reader_instance_derived.md\n[seqm-proposal]:    seqm_proposal.md\n[tag-dont-type]:    tag-dont-type.md\n[unmaintain]:       unmaintainable_haskell.md\n[useful]:           useful_techniques.md\n[zipWithConst]:     2018-11-22_zipWith_const.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Farticles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquchen%2Farticles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Farticles/lists"}