{"id":17087075,"url":"https://github.com/anton-latukha/fundamental-haskell","last_synced_at":"2026-03-13T17:40:36.685Z","repository":{"id":107456970,"uuid":"126463921","full_name":"Anton-Latukha/Fundamental-Haskell","owner":"Anton-Latukha","description":"Fundamental Haskell book, to the point terse statements on Haskell, Category theory, and related fields. Encyclopedic pocketbook of meaning. Zen kōan-like meditations of understanding. For quick or memory curve spaced repetition learning.","archived":false,"fork":false,"pushed_at":"2022-03-02T10:45:34.000Z","size":77228,"stargazers_count":121,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-28T06:57:36.924Z","etag":null,"topics":["category-theory","dictionary","dictionary-learning","emacs","functional-programming","haskell","learning-resource","org","org-mode","philosophy-of-science","spaced-repetition"],"latest_commit_sha":null,"homepage":"https://blog.latukha.com/haskell-notes","language":"Emacs Lisp","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/Anton-Latukha.png","metadata":{"files":{"readme":"README.html","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}},"created_at":"2018-03-23T09:38:08.000Z","updated_at":"2024-08-23T16:06:23.000Z","dependencies_parsed_at":"2023-05-17T13:00:18.417Z","dependency_job_id":null,"html_url":"https://github.com/Anton-Latukha/Fundamental-Haskell","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anton-Latukha%2FFundamental-Haskell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anton-Latukha%2FFundamental-Haskell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anton-Latukha%2FFundamental-Haskell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anton-Latukha%2FFundamental-Haskell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anton-Latukha","download_url":"https://codeload.github.com/Anton-Latukha/Fundamental-Haskell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223546010,"owners_count":17163002,"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":["category-theory","dictionary","dictionary-learning","emacs","functional-programming","haskell","learning-resource","org","org-mode","philosophy-of-science","spaced-repetition"],"created_at":"2024-10-14T13:30:37.600Z","updated_at":"2026-03-13T17:40:31.582Z","avatar_url":"https://github.com/Anton-Latukha.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003c!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"\u003e\n\u003chead\u003e\n\u003c!-- 2021-04-14 Wed 17:29 --\u003e\n\u003cmeta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" /\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /\u003e\n\u003ctitle\u003eFundamental Haskell\u003c/title\u003e\n\u003cmeta name=\"generator\" content=\"Org mode\" /\u003e\n\u003cmeta name=\"author\" content=\"Anton Latukha\" /\u003e\n\u003cmeta name=\"description\" content=\"Fundamental notes on Haskell, Category theory and related fields.\"\n /\u003e\n\u003cmeta name=\"keywords\" content=\"Haskell,Org-mode,Org-drill,Category theory,Functor,Applicative,Monad,Learning,Terms,Definitions,Theory,Book,Dictionary,Encyclopedia,Handbook,Philosophy,Philosophy of mathematics\" /\u003e\n\u003cstyle type=\"text/css\"\u003e\n \u003c!--/*--\u003e\u003c![CDATA[/*\u003e\u003c!--*/\n  .title  { text-align: center;\n             margin-bottom: .2em; }\n  .subtitle { text-align: center;\n              font-size: medium;\n              font-weight: bold;\n              margin-top:0; }\n  .todo   { font-family: monospace; color: red; }\n  .done   { font-family: monospace; color: green; }\n  .priority { font-family: monospace; color: orange; }\n  .tag    { background-color: #eee; font-family: monospace;\n            padding: 2px; font-size: 80%; font-weight: normal; }\n  .timestamp { color: #bebebe; }\n  .timestamp-kwd { color: #5f9ea0; }\n  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }\n  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }\n  .org-center { margin-left: auto; margin-right: auto; text-align: center; }\n  .underline { text-decoration: underline; }\n  #postamble p, #preamble p { font-size: 90%; margin: .2em; }\n  p.verse { margin-left: 3%; }\n  pre {\n    border: 1px solid #ccc;\n    box-shadow: 3px 3px 3px #eee;\n    padding: 8pt;\n    font-family: monospace;\n    overflow: auto;\n    margin: 1.2em;\n  }\n  pre.src {\n    position: relative;\n    overflow: auto;\n    padding-top: 1.2em;\n  }\n  pre.src:before {\n    display: none;\n    position: absolute;\n    background-color: white;\n    top: -10px;\n    right: 10px;\n    padding: 3px;\n    border: 1px solid black;\n  }\n  pre.src:hover:before { display: inline; margin-top: 14px;}\n  /* Languages per Org manual */\n  pre.src-asymptote:before { content: 'Asymptote'; }\n  pre.src-awk:before { content: 'Awk'; }\n  pre.src-C:before { content: 'C'; }\n  /* pre.src-C++ doesn't work in CSS */\n  pre.src-clojure:before { content: 'Clojure'; }\n  pre.src-css:before { content: 'CSS'; }\n  pre.src-D:before { content: 'D'; }\n  pre.src-ditaa:before { content: 'ditaa'; }\n  pre.src-dot:before { content: 'Graphviz'; }\n  pre.src-calc:before { content: 'Emacs Calc'; }\n  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }\n  pre.src-fortran:before { content: 'Fortran'; }\n  pre.src-gnuplot:before { content: 'gnuplot'; }\n  pre.src-haskell:before { content: 'Haskell'; }\n  pre.src-hledger:before { content: 'hledger'; }\n  pre.src-java:before { content: 'Java'; }\n  pre.src-js:before { content: 'Javascript'; }\n  pre.src-latex:before { content: 'LaTeX'; }\n  pre.src-ledger:before { content: 'Ledger'; }\n  pre.src-lisp:before { content: 'Lisp'; }\n  pre.src-lilypond:before { content: 'Lilypond'; }\n  pre.src-lua:before { content: 'Lua'; }\n  pre.src-matlab:before { content: 'MATLAB'; }\n  pre.src-mscgen:before { content: 'Mscgen'; }\n  pre.src-ocaml:before { content: 'Objective Caml'; }\n  pre.src-octave:before { content: 'Octave'; }\n  pre.src-org:before { content: 'Org mode'; }\n  pre.src-oz:before { content: 'OZ'; }\n  pre.src-plantuml:before { content: 'Plantuml'; }\n  pre.src-processing:before { content: 'Processing.js'; }\n  pre.src-python:before { content: 'Python'; }\n  pre.src-R:before { content: 'R'; }\n  pre.src-ruby:before { content: 'Ruby'; }\n  pre.src-sass:before { content: 'Sass'; }\n  pre.src-scheme:before { content: 'Scheme'; }\n  pre.src-screen:before { content: 'Gnu Screen'; }\n  pre.src-sed:before { content: 'Sed'; }\n  pre.src-sh:before { content: 'shell'; }\n  pre.src-sql:before { content: 'SQL'; }\n  pre.src-sqlite:before { content: 'SQLite'; }\n  /* additional languages in org.el's org-babel-load-languages alist */\n  pre.src-forth:before { content: 'Forth'; }\n  pre.src-io:before { content: 'IO'; }\n  pre.src-J:before { content: 'J'; }\n  pre.src-makefile:before { content: 'Makefile'; }\n  pre.src-maxima:before { content: 'Maxima'; }\n  pre.src-perl:before { content: 'Perl'; }\n  pre.src-picolisp:before { content: 'Pico Lisp'; }\n  pre.src-scala:before { content: 'Scala'; }\n  pre.src-shell:before { content: 'Shell Script'; }\n  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }\n  /* additional language identifiers per \"defun org-babel-execute\"\n       in ob-*.el */\n  pre.src-cpp:before  { content: 'C++'; }\n  pre.src-abc:before  { content: 'ABC'; }\n  pre.src-coq:before  { content: 'Coq'; }\n  pre.src-groovy:before  { content: 'Groovy'; }\n  /* additional language identifiers from org-babel-shell-names in\n     ob-shell.el: ob-shell is the only babel language using a lambda to put\n     the execution function name together. */\n  pre.src-bash:before  { content: 'bash'; }\n  pre.src-csh:before  { content: 'csh'; }\n  pre.src-ash:before  { content: 'ash'; }\n  pre.src-dash:before  { content: 'dash'; }\n  pre.src-ksh:before  { content: 'ksh'; }\n  pre.src-mksh:before  { content: 'mksh'; }\n  pre.src-posh:before  { content: 'posh'; }\n  /* Additional Emacs modes also supported by the LaTeX listings package */\n  pre.src-ada:before { content: 'Ada'; }\n  pre.src-asm:before { content: 'Assembler'; }\n  pre.src-caml:before { content: 'Caml'; }\n  pre.src-delphi:before { content: 'Delphi'; }\n  pre.src-html:before { content: 'HTML'; }\n  pre.src-idl:before { content: 'IDL'; }\n  pre.src-mercury:before { content: 'Mercury'; }\n  pre.src-metapost:before { content: 'MetaPost'; }\n  pre.src-modula-2:before { content: 'Modula-2'; }\n  pre.src-pascal:before { content: 'Pascal'; }\n  pre.src-ps:before { content: 'PostScript'; }\n  pre.src-prolog:before { content: 'Prolog'; }\n  pre.src-simula:before { content: 'Simula'; }\n  pre.src-tcl:before { content: 'tcl'; }\n  pre.src-tex:before { content: 'TeX'; }\n  pre.src-plain-tex:before { content: 'Plain TeX'; }\n  pre.src-verilog:before { content: 'Verilog'; }\n  pre.src-vhdl:before { content: 'VHDL'; }\n  pre.src-xml:before { content: 'XML'; }\n  pre.src-nxml:before { content: 'XML'; }\n  /* add a generic configuration mode; LaTeX export needs an additional\n     (add-to-list 'org-latex-listings-langs '(conf \" \")) in .emacs */\n  pre.src-conf:before { content: 'Configuration File'; }\n\n  table { border-collapse:collapse; }\n  caption.t-above { caption-side: top; }\n  caption.t-bottom { caption-side: bottom; }\n  td, th { vertical-align:top;  }\n  th.org-right  { text-align: center;  }\n  th.org-left   { text-align: center;   }\n  th.org-center { text-align: center; }\n  td.org-right  { text-align: right;  }\n  td.org-left   { text-align: left;   }\n  td.org-center { text-align: center; }\n  dt { font-weight: bold; }\n  .footpara { display: inline; }\n  .footdef  { margin-bottom: 1em; }\n  .figure { padding: 1em; }\n  .figure p { text-align: center; }\n  .equation-container {\n    display: table;\n    text-align: center;\n    width: 100%;\n  }\n  .equation {\n    vertical-align: middle;\n  }\n  .equation-label {\n    display: table-cell;\n    text-align: right;\n    vertical-align: middle;\n  }\n  .inlinetask {\n    padding: 10px;\n    border: 2px solid gray;\n    margin: 10px;\n    background: #ffffcc;\n  }\n  #org-div-home-and-up\n   { text-align: right; font-size: 70%; white-space: nowrap; }\n  textarea { overflow-x: auto; }\n  .linenr { font-size: smaller }\n  .code-highlighted { background-color: #ffff00; }\n  .org-info-js_info-navigation { border-style: none; }\n  #org-info-js_console-label\n    { font-size: 10px; font-weight: bold; white-space: nowrap; }\n  .org-info-js_search-highlight\n    { background-color: #ffff00; color: #000000; font-weight: bold; }\n  .org-svg { width: 90%; }\n  /*]]\u003e*/--\u003e\n\u003c/style\u003e\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"styles/readtheorg/css/htmlize.css\"/\u003e\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"styles/readtheorg/css/readtheorg.css\"/\u003e\n\u003cscript type=\"text/javascript\" src=\"styles/lib/js/jquery.min.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"styles/lib/js/bootstrap.min.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"styles/lib/js/jquery.stickytableheaders.min.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"styles/readtheorg/js/readtheorg.js\"\u003e\u003c/script\u003e\n\u003cstyle type=\"text/css\"\u003ediv.MathJax_Display{display: inline-block !important; width: auto;}\u003c/style\u003e\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"http://tikzjax.com/v1/fonts.css\"\u003e\n\u003cscript src=\"http://tikzjax.com/v1/tikzjax.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\"\u003e\n// @license magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a\u0026dn=public-domain.txt Public Domain\n\u003c!--/*--\u003e\u003c![CDATA[/*\u003e\u003c!--*/\n     function CodeHighlightOn(elem, id)\n     {\n       var target = document.getElementById(id);\n       if(null != target) {\n         elem.classList.add(\"code-highlighted\");\n         target.classList.add(\"code-highlighted\");\n       }\n     }\n     function CodeHighlightOff(elem, id)\n     {\n       var target = document.getElementById(id);\n       if(null != target) {\n         elem.classList.remove(\"code-highlighted\");\n         target.classList.remove(\"code-highlighted\");\n       }\n     }\n    /*]]\u003e*///--\u003e\n// @license-end\n\u003c/script\u003e\n\u003cscript type=\"text/x-mathjax-config\"\u003e\n    MathJax.Hub.Config({\n        displayAlign: \"center\",\n        displayIndent: \"0em\",\n\n        \"HTML-CSS\": { scale: 100,\n                        linebreaks: { automatic: \"false\" },\n                        webFont: \"TeX\"\n                       },\n        SVG: {scale: 100,\n              linebreaks: { automatic: \"false\" },\n              font: \"TeX\"},\n        NativeMML: {scale: 100},\n        TeX: { equationNumbers: {autoNumber: \"AMS\"},\n               MultLineWidth: \"85%\",\n               TagSide: \"right\",\n               TagIndent: \".8em\"\n             }\n});\n\u003c/script\u003e\n\u003cscript type=\"text/javascript\"\n        src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML\"\u003e\u003c/script\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cdiv id=\"content\"\u003e\n\u003ch1 class=\"title\"\u003eFundamental Haskell\n\u003cbr /\u003e\n\u003cspan class=\"subtitle\"\u003eEncyclopedical handbook for learning and understanding fundamentals\u003c/span\u003e\n\u003c/h1\u003e\n\u003cdiv id=\"table-of-contents\"\u003e\n\u003ch2\u003eTable of Contents\u003c/h2\u003e\n\u003cdiv id=\"text-table-of-contents\"\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org853f796\"\u003e1. Introduction\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6bd620c\"\u003e2. Definitions\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb31b910\"\u003e2.1. Algebra\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgce6e57c\"\u003e2.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4cae81f\"\u003e2.1.2. Algebraic\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org513cd2a\"\u003e2.1.3. Algebraic structure\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3d2b19e\"\u003e2.1.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0c2de8d\"\u003e2.1.3.2. Fundamental theorem of algebra\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7934027\"\u003e2.1.3.3. Magma\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5c309ec\"\u003e2.1.3.3.1. Semigroup\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org936f5e4\"\u003e2.1.3.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4cc2417\"\u003e2.1.3.3.1.2. Monoid\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgab01c79\"\u003e2.1.3.3.1.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc4fcd03\"\u003e2.1.3.3.1.2.2. Monoid properties\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfaa1849\"\u003e2.1.3.3.1.2.2.1. Monoid left identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf7199f3\"\u003e2.1.3.3.1.2.2.2. Monoid right identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf28e0a6\"\u003e2.1.3.3.1.2.2.3. Monoid associativity property\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org44a71db\"\u003e2.1.3.3.1.2.3. Commutative monoid\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfe74e91\"\u003e2.1.3.3.1.2.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org61a5b6b\"\u003e2.1.3.3.1.2.4. Group\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge489aad\"\u003e2.1.3.3.1.2.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0c372f9\"\u003e2.1.3.3.1.2.4.2. Commutative group\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc3219df\"\u003e2.1.3.3.1.2.4.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbe5abfd\"\u003e2.1.3.3.1.2.4.2.2. Ring\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgcd70a2d\"\u003e2.1.3.3.1.2.4.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb7264de\"\u003e2.1.4. Modular arithmetic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4225595\"\u003e2.1.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5caef88\"\u003e2.1.4.2. Modulus\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org55e0ef5\"\u003e2.1.4.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcaf8ece\"\u003e2.2. Category theory\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge53c40f\"\u003e2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd9a5087\"\u003e2.2.2. Abelian category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org698db31\"\u003e2.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc6d7aeb\"\u003e2.2.3. Composition\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5bb164f\"\u003e2.2.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8ec4f8c\"\u003e2.2.4. Endofunctor category\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga3068fa\"\u003e2.2.5. Functor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfc8790f\"\u003e2.2.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgaa8a292\"\u003e2.2.5.2. Power set functor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1f06a30\"\u003e2.2.5.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgabec7d3\"\u003e2.2.5.2.2. Power set functor properties\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org02c8a84\"\u003e2.2.5.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6d700fb\"\u003e2.2.5.2.2.2. Power set functor identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd109d6e\"\u003e2.2.5.2.2.3. Power set functor composition property\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org42414b4\"\u003e2.2.5.2.3. Lift\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9647cf6\"\u003e2.2.5.2.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org671ffe7\"\u003e2.2.5.2.4. Power set functor is a free monad\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6afc473\"\u003e2.2.5.3. Forgetful functor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7892f70\"\u003e2.2.5.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6a9d8fb\"\u003e2.2.5.4. Identity functor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0783c55\"\u003e2.2.5.5. Endofunctor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9ed54b7\"\u003e2.2.5.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org30ea815\"\u003e2.2.5.6. Applicative functor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgbd0da74\"\u003e2.2.5.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org49b86c0\"\u003e2.2.5.6.2. Applicative property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org036c169\"\u003e2.2.5.6.3. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0055cb3\"\u003e2.2.5.6.3.1. Applicative identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0da810c\"\u003e2.2.5.6.3.2. Applicative composition property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8d6aa99\"\u003e2.2.5.6.3.3. Applicative homomorphism property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org01a5423\"\u003e2.2.5.6.3.4. Applicative interchange property\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5535653\"\u003e2.2.5.6.4. Applicative function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga8fa9bc\"\u003e2.2.5.6.4.1. liftA*\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org75df793\"\u003e2.2.5.6.4.1.1. liftA\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org756ec18\"\u003e2.2.5.6.4.1.2. liftA2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb894f70\"\u003e2.2.5.6.4.1.3. \u0026lt;\u0026lt;\u0026lt;liftA2 (\u0026lt;*\u0026gt;)\u0026gt;\u0026gt;\u0026gt;\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org92473bb\"\u003e2.2.5.6.4.1.4. liftA2 (liftA2 (\u0026lt;*\u0026gt;))\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8bf20ae\"\u003e2.2.5.6.4.1.5. liftA3\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org466c72d\"\u003e2.2.5.6.4.2. Conditional applicative computations\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge570c3c\"\u003e2.2.5.6.5. Special applicatives\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org190dc13\"\u003e2.2.5.6.5.1. Identity applicative\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7aced87\"\u003e2.2.5.6.5.2. Constant applicative\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf547629\"\u003e2.2.5.6.5.3. Maybe applicative\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf975e05\"\u003e2.2.5.6.5.4. Either applicative\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36fa2a6\"\u003e2.2.5.6.5.5. Validation applicative\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb4391ad\"\u003e2.2.5.6.6. Monad\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2b66e77\"\u003e2.2.5.6.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org48ba623\"\u003e2.2.5.6.6.2. Monad property\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5743203\"\u003e2.2.5.6.6.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org046f42e\"\u003e2.2.5.6.6.2.2. Monad left identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga1965f0\"\u003e2.2.5.6.6.2.3. Monad right identity property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org26df866\"\u003e2.2.5.6.6.2.4. Monad associativity property\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga2fab9c\"\u003e2.2.5.6.6.3. Monad type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org042a556\"\u003e2.2.5.6.6.3.1. MonadPlus type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc503304\"\u003e2.2.5.6.6.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3cc044a\"\u003e2.2.5.6.6.4. Functor -\u0026gt; Applicative -\u0026gt; Monad progression\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb9d3496\"\u003e2.2.5.6.6.5. Monad function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4d57cde\"\u003e2.2.5.6.6.5.1. Return function\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org72c01d8\"\u003e2.2.5.6.6.5.2. Join function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org521d8d3\"\u003e2.2.5.6.6.5.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdd535c2\"\u003e2.2.5.6.6.5.2.2. join . fmap == (=\u0026lt;\u0026lt;)\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb57debf\"\u003e2.2.5.6.6.5.3. Bind function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0950bad\"\u003e2.2.5.6.6.5.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6f2d8da\"\u003e2.2.5.6.6.5.4. Sequencing operator \u003ccode\u003e(\u0026gt;\u0026gt; ) \\equiv ( *\u0026gt;)\u003c/code\u003e:\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5b7cf70\"\u003e2.2.5.6.6.5.5. Monadic versions of list functions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org49e7281\"\u003e2.2.5.6.6.5.6. liftM*\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9d7275a\"\u003e2.2.5.6.6.5.6.1. liftM\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7ff70f8\"\u003e2.2.5.6.6.5.6.2. liftM2\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2596fae\"\u003e2.2.5.6.6.6. Comonad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf8caad2\"\u003e2.2.5.6.6.7. Kleisli arrow\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd7a945b\"\u003e2.2.5.6.6.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8ed2c1c\"\u003e2.2.5.6.6.8. Kleisli composition\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5ff12e3\"\u003e2.2.5.6.6.9. Kleisli category\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org37c2547\"\u003e2.2.5.6.6.10. Special monad\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc4d321d\"\u003e2.2.5.6.6.10.1. Identity monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org821b209\"\u003e2.2.5.6.6.10.2. Maybe monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org23be402\"\u003e2.2.5.6.6.10.3. Either monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6e896db\"\u003e2.2.5.6.6.10.4. Error monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org281dc95\"\u003e2.2.5.6.6.10.5. List monad\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge8523dc\"\u003e2.2.5.6.6.10.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org58e1c8c\"\u003e2.2.5.6.6.10.6. Reader monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36ce1df\"\u003e2.2.5.6.6.10.7. Writer monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9e06c2f\"\u003e2.2.5.6.6.10.8. State monad\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org01f387c\"\u003e2.2.5.6.6.11. Monad transformer\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8269ee4\"\u003e2.2.5.6.6.11.1. MaybeT\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2a62db8\"\u003e2.2.5.6.6.11.2. EitherT\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3a60581\"\u003e2.2.5.6.6.11.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeb9d28a\"\u003e2.2.5.6.6.11.3. ReaderT\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1091563\"\u003e2.2.5.6.6.11.4. MonadTrans type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7c526c4\"\u003e2.2.5.6.6.11.4.0.1. MonadIO type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgab7a7ab\"\u003e2.2.5.6.6.11.4.0.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc369fe5\"\u003e2.2.5.6.7. Alternative type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6e95d61\"\u003e2.2.5.6.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge82bd03\"\u003e2.2.5.7. Monoidal functor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeefa6fa\"\u003e2.2.5.8. \u003ccode\u003e$\u0026gt;\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf9acd6e\"\u003e2.2.5.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8322089\"\u003e2.2.5.9. Multifunctor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org24455b0\"\u003e2.2.5.9.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb068139\"\u003e2.2.6. Hask category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc5ecda7\"\u003e2.2.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org71adeaa\"\u003e2.2.7. Morphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3144b63\"\u003e2.2.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0f5ba47\"\u003e2.2.7.2. Homomorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd6e137a\"\u003e2.2.7.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1c4d126\"\u003e2.2.7.3. Identity morphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgabef2cb\"\u003e2.2.7.3.1. Identity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgcef7315\"\u003e2.2.7.3.1.1. Two-sided identity of a predicate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0c8866e\"\u003e2.2.7.3.1.2. Left identity of a predicate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0aa0963\"\u003e2.2.7.3.1.3. Right identity of a predicate\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1321fd5\"\u003e2.2.7.3.2. Identity function\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9ad8160\"\u003e2.2.7.4. Monomorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9489dce\"\u003e2.2.7.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org92db75c\"\u003e2.2.7.5. Epimorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgab735fb\"\u003e2.2.7.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb7e8adc\"\u003e2.2.7.6. Isomorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org766ee90\"\u003e2.2.7.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org131c342\"\u003e2.2.7.6.2. Lax\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1b6dca6\"\u003e2.2.7.7. Endomorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5d9eed4\"\u003e2.2.7.7.1. Automorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga7b8c4a\"\u003e2.2.7.7.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8350d8d\"\u003e2.2.7.7.2. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge989b57\"\u003e2.2.7.8. Catamorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgeddd445\"\u003e2.2.7.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgaaaf122\"\u003e2.2.7.8.2. Catamorphism property\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd178b29\"\u003e2.2.7.8.2.1. Hylomorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgde2da11\"\u003e2.2.7.8.2.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8a2a512\"\u003e2.2.7.8.3. Anamorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3a2136b\"\u003e2.2.7.8.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org97066ef\"\u003e2.2.7.9. Kernel\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgeccbe8f\"\u003e2.2.7.9.1. Kernel homomorphism\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org15427f3\"\u003e2.2.8. Set category\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org34cd41e\"\u003e2.2.9. Natural transformation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb742a1f\"\u003e2.2.9.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge0544e6\"\u003e2.2.9.2. Natural transformation component\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org851ba8f\"\u003e2.2.9.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org083bc02\"\u003e2.2.9.3. Natural transformation in Haskell\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org704815c\"\u003e2.2.9.4. Cat category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org97ce373\"\u003e2.2.9.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org89370a3\"\u003e2.2.9.4.2. Bicategory\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org88ecea4\"\u003e2.2.10. Category dual\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orged82e4c\"\u003e2.2.10.0.0.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0ea4488\"\u003e2.2.10.1. Coalgebra\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org26919e8\"\u003e2.2.11. Thin category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3a147b0\"\u003e2.2.11.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5c684e4\"\u003e2.2.12. Commuting diagram\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org849415f\"\u003e2.2.12.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcdef761\"\u003e2.2.13. Universal construction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfeccee9\"\u003e2.2.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org83b98f2\"\u003e2.2.14. Product\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org525264a\"\u003e2.2.14.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org96fede7\"\u003e2.2.15. Coproduct\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgdbf6b9c\"\u003e2.2.15.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org76a920c\"\u003e2.2.16. Free object\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org255c0f7\"\u003e2.2.17. Internal category\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgce1ac2a\"\u003e2.2.18. Hom set\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org64ea7fb\"\u003e2.2.18.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org78a0204\"\u003e2.2.18.2. Hom-functor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org91883e8\"\u003e2.2.18.3. Exponential object\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9c1fc2d\"\u003e2.2.18.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org901deef\"\u003e2.2.18.3.2. Enriched category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8f39cd8\"\u003e2.2.18.3.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org27c7d8e\"\u003e2.2.19. Mag category\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org179d7c5\"\u003e2.2.19.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org43097f8\"\u003e2.3. Data type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org73df1ee\"\u003e2.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge925781\"\u003e2.3.2. Actual type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgad03c1d\"\u003e2.3.3. Algebraic data type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgbe45cd0\"\u003e2.3.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6637bbe\"\u003e2.3.4. Cardinality\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0dfff69\"\u003e2.3.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf913d1e\"\u003e2.3.5. Data constant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8dc7e62\"\u003e2.3.6. Data constructor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org52760a1\"\u003e2.3.7. data declaration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org514f738\"\u003e2.3.8. Dependent type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org71dc717\"\u003e2.3.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org32ef26e\"\u003e2.3.9. Gen type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5c1c39a\"\u003e2.3.10. Higher-kinded data type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6f17e5e\"\u003e2.3.10.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgff63114\"\u003e2.3.11. newtype declaration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4e7ddd6\"\u003e2.3.12. Principal type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org598fac6\"\u003e2.3.13. Product data type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb559d14\"\u003e2.3.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7490e24\"\u003e2.3.13.2. Sequence\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4659409\"\u003e2.3.13.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3b96dfe\"\u003e2.3.13.2.2. List\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4c5dca8\"\u003e2.3.14. Proxy type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6ded03b\"\u003e2.3.15. Static typing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org614f0fb\"\u003e2.3.16. Structural type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb46fd50\"\u003e2.3.16.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org30a3ca2\"\u003e2.3.17. Structural type system\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb47c632\"\u003e2.3.17.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgca8fa44\"\u003e2.3.18. Sum data type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc749e39\"\u003e2.3.19. Type alias\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org86a47a9\"\u003e2.3.20. Type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3d92f5b\"\u003e2.3.20.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org116b342\"\u003e2.3.20.2. Arbitrary type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org27c4be8\"\u003e2.3.20.2.1. Arbitrary function\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5a810da\"\u003e2.3.20.3. CoArbitrary type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8537943\"\u003e2.3.20.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org371f402\"\u003e2.3.20.4. Typeable type class\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org54bef11\"\u003e2.3.20.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org145d6ff\"\u003e2.3.20.5. Type class inheritance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga65dc68\"\u003e2.3.20.6. Derived instance\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org46465ee\"\u003e2.3.20.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0cd50f0\"\u003e2.3.21. Type constant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc09185c\"\u003e2.3.22. Type constructor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9d5f8d5\"\u003e2.3.23. type declaration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga2a7ea9\"\u003e2.3.24. Typed hole\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd0fe71f\"\u003e2.3.24.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org15a48b9\"\u003e2.3.25. Type inference\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org05063da\"\u003e2.3.25.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbb89f97\"\u003e2.3.26. Type class instance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd79e5c0\"\u003e2.3.27. Type rank\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org83d4a20\"\u003e2.3.27.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org14ef9aa\"\u003e2.3.28. Type variable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org03b83cc\"\u003e2.3.29. Unlifted type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0f19e4e\"\u003e2.3.29.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcbc9ebb\"\u003e2.3.30. Linear type\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8c791c1\"\u003e2.3.30.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeca5444\"\u003e2.3.31. NonEmpty list data type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc3f6941\"\u003e2.3.32. Session type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org155bfec\"\u003e2.3.33. Binary tree\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc34dbf8\"\u003e2.3.34. Bottom value\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7a96528\"\u003e2.3.34.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org099b884\"\u003e2.3.35. Bound\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org18990b7\"\u003e2.3.35.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd5b2efb\"\u003e2.3.36. Constructor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4eef2c7\"\u003e2.3.36.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0ccd36f\"\u003e2.3.37. Context\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd626604\"\u003e2.3.37.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcf314a4\"\u003e2.3.38. Inhabit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6858929\"\u003e2.3.39. Maybe\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge7cd283\"\u003e2.3.39.0.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4e0dc21\"\u003e2.3.40. Expected type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4d66395\"\u003e2.3.41. ADT\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org71eaa8b\"\u003e2.3.42. Concrete type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf95e8d6\"\u003e2.3.43. Type punning\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4e4909a\"\u003e2.3.44. Kind\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org86ef401\"\u003e2.3.44.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org21e0536\"\u003e2.3.45. IO\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbb4d139\"\u003e2.4. Expression\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org475fc53\"\u003e2.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0202339\"\u003e2.4.2. Closed-form expression\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeace3d5\"\u003e2.4.3. RHS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9c83011\"\u003e2.4.4. LHS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6d0a1bf\"\u003e2.4.5. Redex\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4477df0\"\u003e2.4.6. Concatenate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org934e6a9\"\u003e2.4.7. Alpha equivalence\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1844403\"\u003e2.4.8. Ground expression\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3949b3d\"\u003e2.4.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9a1b612\"\u003e2.4.9. Variable\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org35a3bd2\"\u003e2.4.9.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9b5974e\"\u003e2.4.10. Phrase\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org92a56c2\"\u003e2.5. Function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5b6ec31\"\u003e2.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdf7865b\"\u003e2.5.2. Arity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge9c9e96\"\u003e2.5.3. Bijection\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6ab28fb\"\u003e2.5.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfec70be\"\u003e2.5.4. Combinator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org282937c\"\u003e2.5.4.1. \u0026Psi;-combinator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org14a8efc\"\u003e2.5.4.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5250b2a\"\u003e2.5.5. Function application\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7732fc9\"\u003e2.5.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org39acbe2\"\u003e2.5.6. Function body\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6e10dff\"\u003e2.5.7. Function composition\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge7acc88\"\u003e2.5.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7207483\"\u003e2.5.8. Function head\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org78c45d3\"\u003e2.5.9. Function range\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0cce8ff\"\u003e2.5.10. Higher-order function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org349c235\"\u003e2.5.10.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc070681\"\u003e2.5.10.2. Fold\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfd52389\"\u003e2.5.11. Injection\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org818c975\"\u003e2.5.11.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3dac471\"\u003e2.5.12. Partial function\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6e1b78b\"\u003e2.5.13. Purity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd455950\"\u003e2.5.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0aba33c\"\u003e2.5.14. Pure function\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8c60318\"\u003e2.5.15. Sectioning\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb4fc6ae\"\u003e2.5.16. Surjection\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfc1e24e\"\u003e2.5.16.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9363603\"\u003e2.5.17. Unsafe function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge9b992e\"\u003e2.5.17.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd4b1196\"\u003e2.5.18. Variadic\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5355787\"\u003e2.5.19. Domain\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8b94d44\"\u003e2.5.20. Codomain\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb82f9fc\"\u003e2.5.21. Open formula\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org152cfaf\"\u003e2.5.22. Recursion\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9db3c02\"\u003e2.5.22.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6c7890f\"\u003e2.5.22.2. Base case\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org184f131\"\u003e2.5.22.3. Tail recursion\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf8f3def\"\u003e2.5.22.4. Polymorphic recursion\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org29d4648\"\u003e2.5.22.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9422976\"\u003e2.5.23. Free variable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org450a627\"\u003e2.5.24. Closure\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge32dbff\"\u003e2.5.24.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd7f4259\"\u003e2.5.25. Parameter\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org487693a\"\u003e2.5.25.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org660ec4b\"\u003e2.5.26. Partial application\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0fbe875\"\u003e2.5.26.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org221c60a\"\u003e2.5.27. Well-formed formula\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga36d219\"\u003e2.5.27.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4116be6\"\u003e2.6. Homotopy\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org624f526\"\u003e2.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4eb7a21\"\u003e2.7. Lambda calculus\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0aeaf58\"\u003e2.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb798d9d\"\u003e2.7.2. Lambda cube\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc4af959\"\u003e2.7.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org11c2261\"\u003e2.7.3. Lambda function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga32e528\"\u003e2.7.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9712c63\"\u003e2.7.3.2. Anonymous lambda function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9df99db\"\u003e2.7.3.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org87af4e2\"\u003e2.7.3.3. Uncurry\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org78b00e6\"\u003e2.7.4. \u0026beta;-reduction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4f687e1\"\u003e2.7.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd867c9e\"\u003e2.7.4.2. \u0026beta;-normal form\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4efb8b1\"\u003e2.7.4.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1dae6b2\"\u003e2.7.5. Calculus of constructions\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org615c1b8\"\u003e2.7.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org91fb484\"\u003e2.7.6. Curry–Howard correspondence\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6f0c68e\"\u003e2.7.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcf2cae9\"\u003e2.7.7. Currying\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7f7be08\"\u003e2.7.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org03f6a14\"\u003e2.7.8. Hindley–Milner type system\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org40c8643\"\u003e2.7.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org927d318\"\u003e2.7.9. Reduction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd9e15a8\"\u003e2.7.9.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org461333f\"\u003e2.7.10. \u0026beta;-\u0026eta; normal form\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge5e58a2\"\u003e2.7.10.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3b8476f\"\u003e2.7.11. \u0026eta;-abstraction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org63e79a8\"\u003e2.7.11.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org75dce35\"\u003e2.7.12. Lambda expression\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgad228ba\"\u003e2.8. Operation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5d3d85e\"\u003e2.8.1. Constant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2473ef0\"\u003e2.8.2. Binary operation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga7ead6c\"\u003e2.8.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5d9dec9\"\u003e2.8.3. Operator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org039888c\"\u003e2.8.3.1. Shift operator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9293ca6\"\u003e2.8.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5e7d9bf\"\u003e2.8.3.2. Differential operator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6b290d8\"\u003e2.8.3.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org650e4b5\"\u003e2.8.4. Infix\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org57b033d\"\u003e2.8.5. Fixity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc0840c5\"\u003e2.8.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8723b5a\"\u003e2.8.6. Zero\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3a09499\"\u003e2.8.7. Bind\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org51b6f66\"\u003e2.8.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeedcde2\"\u003e2.8.8. Declaration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf353ec1\"\u003e2.8.9. Dispatch\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orged205ef\"\u003e2.8.10. Evaluation\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org028a464\"\u003e2.9. Permutation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org24b7459\"\u003e2.10. Point-free\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7375ce6\"\u003e2.10.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbfdc566\"\u003e2.10.2. Blackbird\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4361b71\"\u003e2.10.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org661793d\"\u003e2.10.3. Swing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge37046d\"\u003e2.10.4. Squish\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org503cba8\"\u003e2.11. Polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org51cc5e9\"\u003e2.11.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4423f8e\"\u003e2.11.2. Levity polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6dd42bd\"\u003e2.11.3. Parametric polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3d5075a\"\u003e2.11.3.1. Rank-1 polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgac1d2c6\"\u003e2.11.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9a32c54\"\u003e2.11.3.2. Let-bound polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1ca5f5c\"\u003e2.11.3.3. Constrained polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf7982f1\"\u003e2.11.3.3.1. Ad hoc polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc3e4f5f\"\u003e2.11.3.3.1.0.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2684efe\"\u003e2.11.3.4. Impredicative polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org02078b6\"\u003e2.11.3.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgba6247b\"\u003e2.11.3.5. Higher-rank polymorphism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6c7f646\"\u003e2.11.3.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9648723\"\u003e2.11.4. Subtype polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdcdbd67\"\u003e2.11.5. Row polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge7673f2\"\u003e2.11.6. Kind polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd75c99e\"\u003e2.11.7. Linearity polymorphism\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org82ea82e\"\u003e2.12. Compositionality\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge0bf6cf\"\u003e2.12.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org99130c0\"\u003e2.13. Referential transparency\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4b6bc13\"\u003e2.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org56f4f69\"\u003e2.14. Semantics\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0a07e0f\"\u003e2.14.1. Operational semantics\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga066b7e\"\u003e2.14.1.1. Argument\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2326067\"\u003e2.14.1.1.1. Argument of a function\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org385e1fe\"\u003e2.14.1.1.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7b191a2\"\u003e2.14.1.1.2. First-class\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36bb12f\"\u003e2.14.1.2. Relation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgbbeb322\"\u003e2.14.1.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9475d85\"\u003e2.14.1.3. Context-free grammar\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd8806c1\"\u003e2.14.1.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org76b576f\"\u003e2.14.1.4. Constructive proof\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb923ff8\"\u003e2.14.2. Denotational semantics\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf9850f3\"\u003e2.14.2.1. Abstraction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd9b2b17\"\u003e2.14.2.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd4fb81a\"\u003e2.14.2.1.2. Leaky abstraction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge336c7d\"\u003e2.14.2.1.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org843571e\"\u003e2.14.2.1.3. Object\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org44f88b6\"\u003e2.14.2.1.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9baacc2\"\u003e2.14.2.1.3.2. Arrow\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org404ee6d\"\u003e2.14.2.1.3.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7a1711f\"\u003e2.14.2.1.3.3. Terminal object\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4814cff\"\u003e2.14.2.1.3.4. Initial object\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9651554\"\u003e2.14.2.1.3.5. Value\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5c75dc1\"\u003e2.14.2.1.3.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb322754\"\u003e2.14.2.1.3.6. Tensor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd83f09e\"\u003e2.14.2.1.3.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8121e73\"\u003e2.14.2.2. Ambigram\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org90a9aca\"\u003e2.14.2.3. Binary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0de09d6\"\u003e2.14.2.4. Arbitrary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org89144c5\"\u003e2.14.2.5. Refutable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf911867\"\u003e2.14.2.6. Irrefutable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org200daa8\"\u003e2.14.2.7. Superclass\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgab1f693\"\u003e2.14.2.8. Unit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9f7754e\"\u003e2.14.2.9. Nullary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga1ad8e1\"\u003e2.14.2.10. Syntax tree\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge2ff8fb\"\u003e2.14.2.10.1. Abstract syntax tree\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgccd8162\"\u003e2.14.2.10.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2243ce9\"\u003e2.14.2.10.2. Concrete syntax tree\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4975bb1\"\u003e2.14.2.10.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org76bc9a6\"\u003e2.14.2.11. Stream\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1f6d3a6\"\u003e2.14.2.12. Linear\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org19e8747\"\u003e2.14.2.12.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org047739d\"\u003e2.14.2.13. Predicative\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga6235ff\"\u003e2.14.2.14. Quantifier\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1db83f9\"\u003e2.14.2.14.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org666f38c\"\u003e2.14.2.14.2. Forall quantifier\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0fbe55c\"\u003e2.14.2.14.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org15d2b75\"\u003e2.14.2.15. Idiom\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgac96819\"\u003e2.14.2.15.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0f32276\"\u003e2.14.2.16. Impredicative\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6c053ec\"\u003e2.14.3. Axiomatic semantics\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org16b5880\"\u003e2.14.3.1. Property\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5721e4e\"\u003e2.14.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeb2ba92\"\u003e2.14.3.1.2. Associativity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3583c92\"\u003e2.14.3.1.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org76992d4\"\u003e2.14.3.1.2.2. Left-associativity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga86a0c4\"\u003e2.14.3.1.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc5dc499\"\u003e2.14.3.1.2.3. Right-associativity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6f86c24\"\u003e2.14.3.1.2.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org92002bc\"\u003e2.14.3.1.2.4. Non-associativity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1657566\"\u003e2.14.3.1.2.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3587d94\"\u003e2.14.3.1.3. Basis\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7989720\"\u003e2.14.3.1.3.1. Contravariant\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org437d642\"\u003e2.14.3.1.3.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8445d61\"\u003e2.14.3.1.3.2. Covariant\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7ed3ece\"\u003e2.14.3.1.3.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org33699e8\"\u003e2.14.3.1.4. Commutativity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgce69642\"\u003e2.14.3.1.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdabaabc\"\u003e2.14.3.1.5. Idempotence\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org55643b9\"\u003e2.14.3.1.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4a3e906\"\u003e2.14.3.1.6. Distributivity\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgefb188b\"\u003e2.14.3.1.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org640d601\"\u003e2.14.3.2. Effect\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org17b1f76\"\u003e2.14.3.3. Bisimulation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7e99982\"\u003e2.14.3.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org118926e\"\u003e2.14.3.4. Primitive operation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org583c28e\"\u003e2.14.3.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga0f1faf\"\u003e2.14.4. Content word\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7291188\"\u003e2.14.5. Ancient Greek and Latin prefixes\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgaaaf5f7\"\u003e2.14.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org323f348\"\u003e2.15. Set\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org67eaf85\"\u003e2.15.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org89178f3\"\u003e2.15.2. Axiom of choice\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9b2b277\"\u003e2.15.3. Closed set\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge739e1e\"\u003e2.15.4. Power set\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4b4393a\"\u003e2.15.5. Singleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcb61d30\"\u003e2.15.6. Russell's paradox\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0f3a27e\"\u003e2.15.7. Cartesian product\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9274b04\"\u003e2.15.7.1. Pullback\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge5bfee1\"\u003e2.15.7.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org85b2173\"\u003e2.15.8. Zermelo–Fraenkel set theory\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9b0c38d\"\u003e2.15.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf251b68\"\u003e2.16. Testing\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org29b80ed\"\u003e2.16.1. Property testing\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd1537d8\"\u003e2.16.1.1. Function property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org550812a\"\u003e2.16.1.2. Property testing type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd96103a\"\u003e2.16.1.3. Generator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org73bc0fb\"\u003e2.16.1.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge477448\"\u003e2.16.1.3.2. Custom generator\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd2f3104\"\u003e2.16.1.4. Reusing test code\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga5e0e52\"\u003e2.16.1.4.1. Test Commutative property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1433303\"\u003e2.16.1.4.2. Test Symmetry property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga30c841\"\u003e2.16.1.4.3. Test Equivalence property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9bfe9ff\"\u003e2.16.1.4.4. Test Inverse property\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7dd2593\"\u003e2.16.1.5. QuickCheck\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0a8cf82\"\u003e2.16.1.5.1. Manual automation with QuickCheck properties\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4461ce9\"\u003e2.16.2. Write tests algorithm\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5cafe82\"\u003e2.16.3. Shrinking\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9857a12\"\u003e2.17. Logic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2edf3d4\"\u003e2.17.1. Proposition\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd9016ae\"\u003e2.17.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6fbec9f\"\u003e2.17.1.2. Atomic proposition\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org423c5ff\"\u003e2.17.1.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1a9351e\"\u003e2.17.1.3. Compound proposition\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga91ce89\"\u003e2.17.1.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd80f680\"\u003e2.17.1.4. Propositional logic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgad77152\"\u003e2.17.1.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb2972f8\"\u003e2.17.1.4.2. First-order logic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf6cf407\"\u003e2.17.1.4.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf899473\"\u003e2.17.1.4.2.2. Second-order logic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org56c43b3\"\u003e2.17.1.4.2.2.1. Higher-order logic\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5894519\"\u003e2.17.2. Logical connective\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8a07d6c\"\u003e2.17.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org33ca9ee\"\u003e2.17.2.2. Conjunction\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org507d097\"\u003e2.17.2.3. Disjunction\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcf31608\"\u003e2.17.3. Predicate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8a2ffe7\"\u003e2.17.4. Statement\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8be2c81\"\u003e2.17.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc6261eb\"\u003e2.17.4.2. Antecedent\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5e9a207\"\u003e2.17.4.3. Consequent\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3b3e4a7\"\u003e2.17.4.4. Vacuous\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org81ae119\"\u003e2.17.5. Iff\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1c87f2c\"\u003e2.18. Haskell structure\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org97dc991\"\u003e2.18.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge71dfd9\"\u003e2.18.2. Pattern match\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1377095\"\u003e2.18.2.1. As-pattern\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5ee013e\"\u003e2.18.2.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge378744\"\u003e2.18.2.2. Wild-card\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7a06a07\"\u003e2.18.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org46a77d8\"\u003e2.18.2.3. Case\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org88f6584\"\u003e2.18.2.4. Guard\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org913c1e7\"\u003e2.18.2.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd809234\"\u003e2.18.2.5. Pattern guard\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9d1539d\"\u003e2.18.2.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org45f8df7\"\u003e2.18.2.6. Lazy pattern\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf968dfd\"\u003e2.18.2.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8481912\"\u003e2.18.2.7. Pattern binding\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd60eaac\"\u003e2.18.2.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga5a52c9\"\u003e2.18.3. Smart constructor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org82c993f\"\u003e2.18.4. Level of code\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga899a97\"\u003e2.18.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2827a72\"\u003e2.18.4.2. Type level\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3a2d323\"\u003e2.18.4.2.1. Type level declaration\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgaa91587\"\u003e2.18.4.2.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org48e60e7\"\u003e2.18.4.2.2. Type check\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0e0e26f\"\u003e2.18.4.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4bb7e5a\"\u003e2.18.4.2.2.2. Complete user-specific kind signature\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc35ce3e\"\u003e2.18.4.2.2.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org858d3ed\"\u003e2.18.4.3. Term level\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc396bb7\"\u003e2.18.4.4. Compile level\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org893b386\"\u003e2.18.4.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbf5934b\"\u003e2.18.4.5. Runtime level\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4240ffe\"\u003e2.18.4.6. Kind level\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgdbb62ea\"\u003e2.18.4.6.1. Kind check\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2004c09\"\u003e2.18.4.6.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org30bb6ac\"\u003e2.18.5. Orphan instance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org35cb710\"\u003e2.18.6. undefined\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd3c7d0f\"\u003e2.18.7. Hierarchical module name\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org144af41\"\u003e2.18.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8bba5f1\"\u003e2.18.8. Reserved word\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0eb5875\"\u003e2.18.8.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36b9d5a\"\u003e2.18.8.2. import\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0436162\"\u003e2.18.8.3. let\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgea97ab9\"\u003e2.18.8.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf4afdbc\"\u003e2.18.8.4. where\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb565b5d\"\u003e2.18.8.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf76e926\"\u003e2.18.9. Haskell Language Report\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb7939ec\"\u003e2.18.9.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6d48c81\"\u003e2.18.10. Haskell'\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org156ed66\"\u003e2.18.10.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org19b327b\"\u003e2.18.11. Lense\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4aa12fd\"\u003e2.18.12. Pragma\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga86daa9\"\u003e2.18.12.1. LANGUAGE pragma\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8bcc88c\"\u003e2.18.12.1.1. LANGUAGE option\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2e52d69\"\u003e2.18.12.1.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfb20561\"\u003e2.18.12.1.1.2. Useful by default\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9611e46\"\u003e2.18.12.1.1.3. AllowAmbiguousTypes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc7133f8\"\u003e2.18.12.1.1.4. ApplicativeDo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org68c5f6b\"\u003e2.18.12.1.1.5. ConstrainedClassMethods\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org83cb42c\"\u003e2.18.12.1.1.6. CPP\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6447f14\"\u003e2.18.12.1.1.7. DeriveFunctor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbc0224c\"\u003e2.18.12.1.1.8. ExplicitForAll\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd200de2\"\u003e2.18.12.1.1.9. FlexibleContexts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf0a2093\"\u003e2.18.12.1.1.10. FlexibleInstances\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0aa3a2d\"\u003e2.18.12.1.1.11. GeneralizedNewtypeDeriving\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org92f060d\"\u003e2.18.12.1.1.12. ImplicitParams\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgca5fb08\"\u003e2.18.12.1.1.13. LambdaCase\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1a7f7c0\"\u003e2.18.12.1.1.14. MultiParamTypeClasses\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc974296\"\u003e2.18.12.1.1.15. MultiWayIf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge4af7c8\"\u003e2.18.12.1.1.16. OverloadedStrings\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5f0bab3\"\u003e2.18.12.1.1.17. PartialTypeSignatures\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd3e1568\"\u003e2.18.12.1.1.18. RankNTypes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf72fe29\"\u003e2.18.12.1.1.19. ScopedTypeVariables\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org35759d6\"\u003e2.18.12.1.1.20. TupleSections\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org87e2e1d\"\u003e2.18.12.1.1.21. TypeApplications\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org18ac88c\"\u003e2.18.12.1.1.22. TypeSynonymInstances\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9c09881\"\u003e2.18.12.1.1.23. UndecidableInstances\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org84d2f24\"\u003e2.18.12.1.1.24. ViewPatterns\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org199d7eb\"\u003e2.18.12.1.1.25. DatatypeContexts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org257e84d\"\u003e2.18.12.1.1.26. StandaloneKindSignatures\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4fcaf3e\"\u003e2.18.12.1.1.26.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org63f93b0\"\u003e2.18.12.1.1.27. PartialTypeSignatures\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1a3cc11\"\u003e2.18.12.1.1.28. TypeOperators\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7ceace4\"\u003e2.18.12.1.2. How to make a GHC LANGUAGE extension\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8467adf\"\u003e2.19. Computer science\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org530cfd9\"\u003e2.19.1. Guerrilla patch\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orga8e56f1\"\u003e2.19.1.1. Monkey patch\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb0a4c16\"\u003e2.19.2. Interface\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org33ad444\"\u003e2.19.3. Module\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgac9854b\"\u003e2.19.4. Scope\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5c5a085\"\u003e2.19.4.1. Dynamic scope\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org60d8a2e\"\u003e2.19.4.2. Lexical scope\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb86becf\"\u003e2.19.4.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orged99f7b\"\u003e2.19.4.3. Local scope\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org714a85e\"\u003e2.19.4.3.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge99bbf2\"\u003e2.19.5. Shadowing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8d10385\"\u003e2.19.6. Syntatic sugar\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9d8aefb\"\u003e2.19.7. System F\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org88d0b88\"\u003e2.19.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0087ff6\"\u003e2.19.8. Tail call\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org325f623\"\u003e2.19.9. Thunk\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org16b7121\"\u003e2.19.10. Application memory\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5991706\"\u003e2.19.11. Turing machine\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org882f2b9\"\u003e2.19.11.1. Turing complete\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd6fd0a7\"\u003e2.19.11.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org72f7b01\"\u003e2.19.12. REPL\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8d9d94c\"\u003e2.19.13. Domain specific language\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgcb3026e\"\u003e2.19.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org617ba8b\"\u003e2.19.13.2. Embedded domain specific language\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org06b1c88\"\u003e2.19.13.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd0bc70a\"\u003e2.19.14. Data structure\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org299748d\"\u003e2.19.14.1. Cons cell\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org93594a1\"\u003e2.19.14.2. Construct\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1ccb821\"\u003e2.19.14.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1f79152\"\u003e2.19.14.3. Leaf\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3da9fe4\"\u003e2.19.14.4. Node\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0db0f73\"\u003e2.19.14.5. Spine\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org47d4e10\"\u003e2.20. Graph theory\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfd20f0a\"\u003e2.20.1. Successor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org248d891\"\u003e2.20.1.1. Direct successor\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2801dc8\"\u003e2.20.2. Predecessor\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org18c8096\"\u003e2.20.2.1. Direct predecessor\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5eba31d\"\u003e2.20.3. Degree\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org80b01bf\"\u003e2.20.3.1. Indegree\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8cd4f2b\"\u003e2.20.3.2. Outdegree\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgedd1d4e\"\u003e2.20.4. Adjacency matrix\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org304888f\"\u003e2.20.4.0.1. InstanceSigs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2008368\"\u003e2.20.5. Strongly connected\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org296a7ea\"\u003e2.20.5.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org53b5db4\"\u003e2.20.5.2. Strongly connected component\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5cc1f92\"\u003e2.20.5.2.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6509c19\"\u003e2.21. Tagless-final\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc6f8788\"\u003e2.22. Prefix notation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9a72625\"\u003e2.22.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga106457\"\u003e2.22.2. Postfix notation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3b2bc4c\"\u003e2.22.3. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36cd167\"\u003e3. Citation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb0f7a9f\"\u003e4. Good code\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org262c58f\"\u003e4.1. Good: Type aliasing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf37f38b\"\u003e4.2. Good: Type wideness\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeb3bc17\"\u003e4.3. Good: Print\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7b9bdb1\"\u003e4.4. Good: Fold\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4ed37e8\"\u003e4.5. Good: Computation model\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org31d1e10\"\u003e4.6. Good: Make bottoms only local\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga26782f\"\u003e4.7. Good: Newtype wrap is ideally transparent for compiler and does not change performance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdce6528\"\u003e4.8. Good: Instances of types/type classes must go with code you write\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9528fdc\"\u003e4.9. Good: Functions can be abstracted as arguments\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge2766e3\"\u003e4.10. Good: Infix operators can be bind to arguments\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org11feb64\"\u003e4.11. Good: Arbitrary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2a0eebe\"\u003e4.12. Good: Principle of Separation of concerns\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org52543fa\"\u003e4.13. Good: Function composition\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org59b83ea\"\u003e4.14. Good: Point-free\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb18bcf9\"\u003e4.14.1. Good: Point-free is great in multi-dimentions\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgeb5f556\"\u003e4.15. Good: Functor application\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org05ffef8\"\u003e4.16. Good: Parameter order\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge6e7f3b\"\u003e4.17. Good: Applicative monoid\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcd958d4\"\u003e4.18. Good: Creative process\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3d3ab1f\"\u003e4.18.1. Pick phylosophy principles one to three the more - the harder the implementation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge3e14f9\"\u003e4.18.2. Draw the most blurred representation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8426067\"\u003e4.18.3. Deduce abstractions and write remotely what they are\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb6c4566\"\u003e4.18.4. Model of computation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org563af5b\"\u003e4.18.4.1. Model the domain\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org292933e\"\u003e4.18.4.2. Model the types\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8edaee4\"\u003e4.18.4.3. Think how to write computations\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org544f384\"\u003e4.18.5. Create\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org019ffe7\"\u003e4.19. Good: About operators \u003ccode\u003e(\u0026lt;$ )\u003c/code\u003e \u003ccode\u003e( **\u0026gt;)\u003c/code\u003e \u003ccode\u003e(\u0026lt;* )\u003c/code\u003e \u003ccode\u003e(\u0026gt;\u0026gt; )\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1ed686c\"\u003e4.20. Good: About functions like {mapM, sequence}_\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org33a5dbe\"\u003e4.21. Good: Guideliles\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd4d33d2\"\u003e4.21.1. Wiki.haskell\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgf2ed5fa\"\u003e4.21.1.1. Documentation\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org75f9431\"\u003e4.21.1.1.1. Comments write in application terms, not technical.\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org03a1e04\"\u003e4.21.1.1.2. Tell what code needs to do not how it does.\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgab436c5\"\u003e4.21.1.2. Haddoc\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb73213f\"\u003e4.21.1.2.1. Put haddock comments to ever exposed data type and function.\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2760814\"\u003e4.21.1.2.2. Haddock header\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org522bb5c\"\u003e4.21.1.3. Code\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7ef239e\"\u003e4.21.1.3.1. Try to stay closer to portable (Haskell98) code\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org86d5371\"\u003e4.21.1.3.2. Try make lines no longer 80 chars\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org28ea4f2\"\u003e4.21.1.3.3. Last char in file should be newline\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6ef6c2f\"\u003e4.21.1.3.4. Symbolic infix identifiers is only library writer right\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org298c9ba\"\u003e4.21.1.3.5. Every function does one thing.\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4c077cc\"\u003e4.22. Good: Use Typed holes to progress the code\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org091fdcc\"\u003e4.23. Good: Haskell allows infinite terms but not infinite types\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org129f0c2\"\u003e4.24. Good: Use type sysnonims to differ the information\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc632c51\"\u003e4.25. Good: Use \u003ccode\u003eControl.Monad.Except\u003c/code\u003e instead of \u003ccode\u003eControl.Monad.Error\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org752d242\"\u003e4.26. Good: Monad OR Applicative\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5becc87\"\u003e4.26.0.1. Start writing monad using 'return', 'ap', 'liftM', 'liftM2', '\u0026gt;\u0026gt;' instead of 'do','\u0026gt;\u0026gt;='\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5649d92\"\u003e4.26.0.2. Basic case when Applicative can be used\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga6af9e7\"\u003e4.26.0.3. Applicative block vs Monad block\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8eca035\"\u003e4.27. Good: Linear type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgec275c6\"\u003e4.28. Good: Exception vs Error\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0a8766c\"\u003e4.29. Good: Let vs. Where\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2eff31e\"\u003e4.30. Good: RankNTypes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org491bac7\"\u003e4.31. Good: Handling orphan instance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3eb33ef\"\u003e4.32. Good: Smart constructor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2741bd6\"\u003e4.33. Good: Thin category\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge02113a\"\u003e4.34. Good: Recursion\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org268c65f\"\u003e4.35. Good: Monoid\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd14717e\"\u003e4.36. Good: Free monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6125e5e\"\u003e4.37. Good: Use mostly where clauses\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org076db0d\"\u003e4.38. Good: Where clause is in a scope with function parameters\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga1e3345\"\u003e4.39. Good: Strong preference towards pattern matching over {head, tail, etc.} functions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org27f30f2\"\u003e4.40. Good: Patternmatching is possible on monadic bind in do\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0c78ca0\"\u003e4.41. Good: Applicative vs Monad\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org27ab50b\"\u003e4.42. Good: StateT, ReaderT, WriterT\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org80e391d\"\u003e4.43. Good: Working with MonadTrans and lift\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org90eeae6\"\u003e4.44. Good: Don't mix Where and Let\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga5cd98e\"\u003e4.45. Good: Where vs. Let\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5c21ac6\"\u003e4.46. Good: The proper nature algorithm that models behaviour of many objects is computation heavy\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5dbd143\"\u003e4.47. Good: In Haskell parameters bound by lambda declaration instantiate to only one concrete type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0738bf5\"\u003e4.48. Good: Instance is a good structure to drew a type line\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org99ff617\"\u003e4.49. Good: MTL vs. Transformers\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5ebac6d\"\u003e5. Bad code\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org69c60b6\"\u003e5.1. Bad pragma\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6be9eb5\"\u003e5.1.1. Bad: Dangerous LANGUAGE pragma option\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org09b4b2e\"\u003e6. Useful functions to remember\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0719f99\"\u003e6.1. Prelude\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgb3b1c40\"\u003e6.1.1. Ord\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org23ea9ea\"\u003e6.1.2. Calc\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfd9d601\"\u003e6.1.3. List operations\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org424bbb3\"\u003e6.2. Data.List\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org03f23e3\"\u003e6.3. Data.Char\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb961c26\"\u003e6.4. QuickCheck\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd51f248\"\u003e7. Tool\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgfd9d039\"\u003e7.1. ghc-pkg\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge18c633\"\u003e7.2. Integration of NixOS/Nix with Haskell IDE Engine (HIE) and Emacs (Spacemacs)\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org61afb14\"\u003e7.2.1. 1. Install the Cachix\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0147e45\"\u003e7.2.2. 2. Installation of HIE\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org6f99dcb\"\u003e7.2.2.1. 2.1. Provide cached builds\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga356716\"\u003e7.2.2.2. 2.2.a. Installation on NixOS distribution:\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5b261be\"\u003e7.2.2.3. 2.2.b. Installation with Nix package manager:\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org20485c9\"\u003e7.2.3. 3. Emacs (Spacemacs) configuration:\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf0b6f6f\"\u003e7.2.4. 4. Open the Haskell file from a project\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc875f21\"\u003e7.2.5. 5. Be pleased writing code\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org490f961\"\u003e7.2.6. 6. (optional) Debugging\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge467e1c\"\u003e7.3. GHC\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3e31c7c\"\u003e7.3.1. GHC code check flags\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga2b0fe1\"\u003e7.4. GHCI\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgdb29fd9\"\u003e7.4.1. Debugging in GHCI\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4e128c2\"\u003e7.5. GHCID\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8507736\"\u003e7.6. runghc\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc87a0a9\"\u003e7.7. Packaging\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org316a10b\"\u003e7.7.1. Cabal\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf79ade8\"\u003e7.7.2. Nix\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8917939\"\u003e7.7.2.1. Nixpkgs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7ff0a5e\"\u003e7.7.3. cabal2nix\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9fcf459\"\u003e7.7.4. hackage2nix\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga32ffd8\"\u003e7.7.5. cabal2spec - Cabal to RPM\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0286a05\"\u003e7.7.6. nix-tools\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfce643c\"\u003e7.7.7. haskell.nix\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc42254a\"\u003e7.8. Emacs/Spacemacs\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfec6fa8\"\u003e7.9. Continuous integration platrorms (CIs) for Open Source Haskell projets\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5de9562\"\u003e8. Library\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgcb2b670\"\u003e8.1. Exceptions\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1d370e8\"\u003e8.1.1. Exceptions - optionally pure extensible exceptions that are compatible with the mtl\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgac6ef15\"\u003e8.1.2. Safe-exceptions - safe, simple API equivalent to the underlying implementation in terms of power, encourages best practices minimizing the chances of getting the exception handling wrong.\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org30e7578\"\u003e8.1.3. Enclosed-exceptions - capture exceptions from the enclosed computation, while reacting to asynchronous exceptions aimed at the calling thread.\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org22f1990\"\u003e8.2. Memory management\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org75096ab\"\u003e8.2.1. membrain - type-safe memory units\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org938342b\"\u003e8.3. Parsers - megaparsec\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc2cb12f\"\u003e8.4. CLIs - optparse-applicative\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9672cd4\"\u003e8.4.1. Modifiers {Attributes}\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org499abd1\"\u003e8.4.2. Builders\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org1aff263\"\u003e8.4.3. Parsers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbcac3e0\"\u003e8.4.4. Composing and more complex parsers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0119995\"\u003e8.4.5. Error handling\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org800ff34\"\u003e8.4.6. Shell expansion\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org06bd858\"\u003e8.5. HTML - Lucid\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org98af46d\"\u003e8.6. Web applications - Servant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org77cc770\"\u003e8.7. IO libraries\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orged832e7\"\u003e8.7.1. Conduit - practical, monolythic, guarantees termination return\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org01398b1\"\u003e8.7.2. Pipes + Pipes Parse - modular, more primitive, theoretically driven\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org949f72a\"\u003e8.8. JSON - aeson\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfb8cd07\"\u003e8.9. Backpack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3fc4a5f\"\u003e8.10. DSL\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgef46698\"\u003e8.10.1. \"Ivory\" - eDSL, safe systems programming, effectively produce C code\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org25259b7\"\u003e9. Draft\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgccaf9f9\"\u003e9.1. Exception handling\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org215ddee\"\u003e9.1.1. Ideal catching\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf4ddd1f\"\u003e9.1.2. \u003ccode\u003eControl.Exception.Safe\u003c/code\u003e main sets of functions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf1a4f26\"\u003e9.1.3. Clean-up of actions/resources\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3e5e6fb\"\u003e9.1.4. Ideal model\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org470825e\"\u003e9.1.5. Universal exception type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc4d72f8\"\u003e9.1.6. Individual exception types\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5c0e8ba\"\u003e9.1.7. Abstract exception type\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9ee7631\"\u003e9.1.8. Composit approach\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org990d63d\"\u003e9.1.9. The changes in GHC 8.8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgccf17ca\"\u003e9.1.10. Diversity in exceptions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org71e3bc6\"\u003e9.1.11. Exception handling strategies\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8dd4c02\"\u003e9.1.12. Asynchronous exception\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orged4532a\"\u003e9.1.13. Monadic Error handling\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org16b4a44\"\u003e9.2. Constraints\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4e3ff59\"\u003e9.3. Monad transformers and their type classes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc36c39b\"\u003e9.4. Layering monad transformers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org28f841a\"\u003e9.5. Hoogle\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org7fc03cd\"\u003e9.5.1. Search\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org85f5863\"\u003e9.5.2. Scope\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5863b8f\"\u003e9.5.2.1. Default\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org689fa51\"\u003e9.5.2.2. Hierarchical module name system (from big letter):\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org5fa9654\"\u003e9.5.2.3. Packages (lower case):\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org10bef5a\"\u003e9.6. ST-Trick monad\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgbd85e1f\"\u003e9.6.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4f3c452\"\u003e9.7. Either\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0b0dc70\"\u003e9.7.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfefa296\"\u003e9.8. Inverse\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgbefbba2\"\u003e9.9. Inversion\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga6b92cd\"\u003e9.10. Inverse function\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdd9ec3c\"\u003e9.11. Inverse morphism\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org489ee20\"\u003e9.12. Partial inverse\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2eebe68\"\u003e9.13. PatternSynonyms\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgeb8ab5d\"\u003e9.13.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8cecaa7\"\u003e9.14. GHC debug keys\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org2b20640\"\u003e9.14.1. -ddump-ds\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org0012516\"\u003e9.14.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgdeb2bc2\"\u003e9.15. GHC optimize keys\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org855c7dc\"\u003e9.15.1. -foptimal-applicative-do\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org49f34fd\"\u003e9.16. Computational trinitarianism\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd24839a\"\u003e9.16.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf1dd08a\"\u003e9.17. Techniques functional programming deals with the state\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org959ff4b\"\u003e9.17.1. Minimizing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org863e99e\"\u003e9.17.2. Concentrating\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org209795a\"\u003e9.17.3. Deferring\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb88c5ec\"\u003e9.18. Functions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4b4cf33\"\u003e9.19. Void\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgd5a4e4c\"\u003e9.19.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge945936\"\u003e9.20. Intuitionistic logic\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9853109\"\u003e9.20.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org6f2a9fc\"\u003e9.21. Principle of explosion\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org3231b73\"\u003e9.21.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd630fba\"\u003e9.22. Universal property\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org774935e\"\u003e9.23. Yoneda lemma\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org540f739\"\u003e9.24. Monoidal category, functoriality of ADTs, Profunctors\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org36f4738\"\u003e9.25. Const functor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org16125c4\"\u003e9.26. Arrow in Haskell\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgd1a074a\"\u003e9.27. Contravariant functor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org50ac210\"\u003e9.28. Profunctor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8213b5d\"\u003e9.29. Coerce\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org8cbc30c\"\u003e9.29.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org18fef43\"\u003e9.30. Universal/Existential quantification\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org996ba0e\"\u003e9.30.1. Use of existentials\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge8ac536\"\u003e9.31. Propagator\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf01380b\"\u003e9.32. Code technics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org47a8207\"\u003e9.33. Algorithm of the Hackage package release\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4fb57e9\"\u003e9.33.1. Form Git{Hub,Lab} pre-release\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgde0d4f8\"\u003e9.33.2. Create git branch \u003ccode\u003erelease x.x.x.x+1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org31bb822\"\u003e9.33.3. Open-up \u003ccode\u003egit diff \u0026lt;lastVer\u0026gt;..HEAD\u003c/code\u003e on one side of the screen\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org0d89351\"\u003e9.33.4. Open \u003ccode\u003eCHANGELOG.md\u003c/code\u003e on the other side of the screen\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgc774538\"\u003e9.33.5. Walk through diff and populate \u003ccode\u003eCHANGELOG.md\u003c/code\u003e\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc3ab6a5\"\u003e9.33.5.1. Populate according to PVP\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org5405aab\"\u003e9.33.5.1.1. Major breaking changes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org88ddbfc\"\u003e9.33.5.1.2. (optional) API additions of functionality\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb84da50\"\u003e9.33.5.1.3. (optional) Other changes in the project, news\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb9d082a\"\u003e9.33.6. Check \u003ccode\u003ecabal sdist\u003c/code\u003e build passes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8312935\"\u003e9.33.7. Think what new files can/should be included in \u003ccode\u003e.cabal\u003c/code\u003e \u003ccode\u003eextra-source-files\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga277031\"\u003e9.33.8. Update \u003ccode\u003e.cabal\u003c/code\u003e \u003ccode\u003eversion:\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge846827\"\u003e9.33.9. Add a \u003ccode\u003egit tag \u0026lt;v\u0026gt;\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9ea551d\"\u003e9.33.10. \u003ccode\u003egit push --tags\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge77942b\"\u003e9.33.11. (optional) (Remove git tag)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org908cf99\"\u003e9.33.12. Make a \u003ccode\u003ecabal sdist\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org45360ca\"\u003e9.33.13. Upload package candidate to Hackage\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4fe9f65\"\u003e9.33.14. (careful) Be fully ready when you upload package release to Hackage, since upload is idempotant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge615f90\"\u003e9.33.15. (optional) If docs not posted on Hackage\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org686c5c9\"\u003e9.33.15.1. (optional) Nix-shell\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfe107e6\"\u003e9.33.15.2. Upload docs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga354de7\"\u003e9.34. Is power set functor is a bifunctor\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgaa17c7d\"\u003e9.35. IO\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org032fc75\"\u003e9.35.1. Base IO Data types\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org4e33035\"\u003e9.35.1.1. IO a\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org199cbf0\"\u003e9.35.1.2. FilePath\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf7d0885\"\u003e9.35.1.3. Handle\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge51fb41\"\u003e9.35.1.4. HandlePosn\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgfce23d3\"\u003e9.35.1.5. Standart handlers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8ea5f1c\"\u003e9.35.1.6. IOMode\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8e86ffc\"\u003e9.35.1.7. File locking\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org8a57430\"\u003e9.35.1.8. Opening files\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org38eee72\"\u003e9.35.1.9. hClose\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgcfe21da\"\u003e9.35.1.10. Special cases\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org9820ede\"\u003e9.35.1.11. Handle operation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org517f836\"\u003e9.35.1.12. BufferMode\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org77a15b8\"\u003e9.35.1.13. Buffering operation\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org98f8261\"\u003e9.35.2. Cabal \u003ccode\u003ePaths_pkgname\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org37c1bd9\"\u003e9.36. Lazy\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org164b0e7\"\u003e9.36.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org474e45a\"\u003e9.37. Traversable\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3ec67c7\"\u003e9.38. Fixed point\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgc22ab46\"\u003e9.38.1. Attractive fixed point\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org2ceffcf\"\u003e9.38.2. Least fixed point\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgda41a0a\"\u003e9.38.2.1. Fix\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4f12221\"\u003e9.39. \u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org453c8bb\"\u003e9.40. Conway's law\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgb969a98\"\u003e9.41. F-algebra\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org4403d6d\"\u003e10. Reference\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orge3f2636\"\u003e10.1. History\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org9a28388\"\u003e10.1.1. Functor-Applicative-Monad Proposal\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org1b1236a\"\u003e10.1.1.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3d83dae\"\u003e10.1.2. Haskell 98\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#org14a5a5a\"\u003e10.1.2.1. Old instance termination rules\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orge214797\"\u003e10.1.3. \"Great moments in Haskell history\" (by Type Classes) - History of Haskell\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orga2b4787\"\u003e10.2. Resources\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgcc2f85b\"\u003e10.2.1. \"State of the Haskell ecosystem\"\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org80c933b\"\u003e10.2.2. \"Haskell performance\" tools, processes, comparisons, data, information, guides\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgff246c8\"\u003e10.2.3. data Haskell - (2017) annotated links to data science \u0026amp; machine learning libraries, overviews and benchmarks of libraries\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org7b718ac\"\u003e10.3. Literature\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org69fce1a\"\u003e10.4. Haskell Package Versioning Policy\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#orgee34798\"\u003e10.4.1. \u003ci\u003e*\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org489d87e\"\u003e11. Giving back\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-text\"\u003e\n                  _oo0oo_\n                  o88888o\n                 88\" . \"88\n                 (| -_- |)\n                 0\\  =  /0\n               ___/`---'\\____\n            .'  \\|       |//  '.\n           /  /|||   :    |||/\\ \\\n          |  _|\\||| -:-  |||||   \\\n         /   | \\\\    -  ///  |\\   \\\n         |   \\_| ''\\---/''   |/   |\n          \\  .-\\__  '-'  ___/-.  /\n        ___'. .'  /--.--\\ `.  .'___\n     .\"\" '\u0026lt;  `.___\\_\u0026lt;|\u0026gt;_/___.' \u0026gt;' \"\".\n    | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |\n    \\  \\ `_.   \\_ __\\ /__ _/   .-` /  /\n=====`-.____`.___ \\_____/___.-`___.-'=====\n                  `=---='\n\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\n\u003cdiv id=\"outline-container-org853f796\" class=\"outline-2\"\u003e\n\u003ch2 id=\"org853f796\"\u003e\u003cspan class=\"section-number-2\"\u003e1\u003c/span\u003e Introduction\u003c/h2\u003e\n\u003cdiv class=\"outline-text-2\" id=\"text-1\"\u003e\n\u003cp\u003e\n\u003ci\u003e“Employ your time in improving yourself by other men's writings so that you shall come easily by what others have labored hard for.”\n(Socrates by Plato)\u003c/i\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\nImportant notes on Haskell, \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e theory \u0026amp; related fields, terms and recommendations.\n\u003c/p\u003e\n\n\u003cp\u003e\nBook comes in forms:\n\u003c/p\u003e\n\u003cul class=\"org-ul\"\u003e\n\u003cli\u003e\u003ca href=\"https://blog.latukha.com/haskell-notes\"\u003eWeb book\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Anton-Latukha/haskell-notes/raw/master/README.pdf\"\u003ePDF\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Anton-Latukha/haskell-notes/blob/master/README.pdf\"\u003eOpen in web PDF viewer\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Anton-Latukha/haskell-notes/raw/master/README.tex\"\u003eLaTeX\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Anton-Latukha/haskell-notes/raw/master/README.org\"\u003eSource code in Org-mode\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Anton-Latukha/haskell-notes\"\u003eGitHub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/Anton.Latukha/haskell-notes\"\u003eGitLab\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\nThis book is created using complex Org markup file with a lot of LaTeX and LaTeX formulas.\nBe aware - GitHub \u0026amp; GitLab only partially parse Org into HTML.\n\u003c/p\u003e\n\n\n\u003cp\u003e\nTo get the full view:\n\u003c/p\u003e\n\u003cul class=\"org-ul\"\u003e\n\u003cli\u003eOutline navigation\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\nLaTeX formulas:\n\u003c/p\u003e\n\n\u003cp\u003e\n\\( {\\displaystyle\\left[{-\\frac{\\hbar^{2}}{2m}}\\nabla^{2}+V(\\vec{r},t)\\right]\\Psi({\\vec{r}},t)=i\\hbar{\\partial\\over\\partial{t}}\\Psi({\\vec{r}},t),\\quad\\sum_{k,j}\\left[-{\\frac{\\hbar^{2}}{\\sqrt{a}}}{\\frac{\\partial}{\\partial{q^{k}}}}\\left({\\sqrt{a}}a^{kj}{\\frac{\\partial}{\\partial{q^{j}}}}\\right)+V\\right]\\Psi+{\\frac{\\hbar}{i}}{\\frac{\\partial{\\Psi}}{\\partial{t}}}=0} \\)\n\u003c/p\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003ca href=\"#org4ea5ebf\"\u003eInterlinks\u003c/a\u003e: \u003ca id=\"org4ea5ebf\"\u003eInterlinks\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\n, please refere to Web book, PDF, LaTeX, of use Org-mode capable viewer/editor.\n\u003c/p\u003e\n\n\u003cp\u003e\nNote about the markup: \u003ccode\u003e\u0026lt;\u0026lt;\u0026lt;This is a radio target\u0026gt;\u0026gt;\u0026gt;\u003c/code\u003e - is the ancor for dynamic linking.\n\u003c/p\u003e\n\n\u003cp\u003e\nUsers of \u003ccode\u003eEmacs\u003c/code\u003e can prettify radio targets to be shown as hyper-links with this \u003ccode\u003eElisp\u003c/code\u003e snippet:\n\u003c/p\u003e\n\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-elisp\"\u003e\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e 2019-06-12: \u003c/span\u003e\u003cspan style=\"color: #b1951d;\"\u003eNOTE\u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e:\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e Prettify '\u0026lt;\u0026lt;\u0026lt;Radio targets\u0026gt;\u0026gt;\u0026gt;' to be shown as '_Radio_targets_',\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e when `org-descriptive-links` set.\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e This is improvement of the code from: Tobias\u0026amp;glmorous:\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e https://emacs.stackexchange.com/questions/19230/how-to-hide-targets\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e There exists library created from the sample:\u003c/span\u003e\n\u003cspan style=\"color: #292929;\"\u003e;;;; \u003c/span\u003e\u003cspan style=\"color: #2d9574; font-size: 120%; font-weight: bold;\"\u003e https://github.com/talwrii/org-hide-targets\u003c/span\u003e\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #4f97d7; font-weight: bold;\"\u003edefcustom\u003c/span\u003e \u003cspan style=\"color: #7590db;\"\u003eorg-hidden-links-additional-re\u003c/span\u003e \u003cspan style=\"color: #356a00;\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e\\\\\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #356a00;\"\u003e\u0026lt;\u0026lt;\u0026lt;\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e\\\\\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #356a00;\"\u003e[[:print:]]+?\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e\\\\\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #356a00;\"\u003e\u0026gt;\u0026gt;\u0026gt;\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e\\\\\u003c/span\u003e\u003cspan style=\"color: #356a00; font-weight: bold;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #356a00;\"\u003e\"\u003c/span\u003e\n  \u003cspan style=\"color: #9f8766;\"\u003e\"Regular expression that matches strings where the invisible-property\u003c/span\u003e\n\u003cspan style=\"color: #9f8766;\"\u003e    of thesub-matches 1 and 2 is set to org-link.\"\u003c/span\u003e\n  \u003cspan style=\"color: #4f97d7;\"\u003e:type\u003c/span\u003e '\u003cspan style=\"color: #bc6ec5;\"\u003e(\u003c/span\u003echoice \u003cspan style=\"color: #2d9574;\"\u003e(\u003c/span\u003econst \u003cspan style=\"color: #4f97d7;\"\u003e:tag\u003c/span\u003e \u003cspan style=\"color: #356a00;\"\u003e\"Off\"\u003c/span\u003e nil\u003cspan style=\"color: #2d9574;\"\u003e)\u003c/span\u003e regexp\u003cspan style=\"color: #bc6ec5;\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color: #4f97d7;\"\u003e:group\u003c/span\u003e 'org-link\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003emake-variable-buffer-local 'org-hidden-links-additional-re\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #4f97d7; font-weight: bold;\"\u003edefun\u003c/span\u003e \u003cspan style=\"color: #bc6ec5; font-weight: bold;\"\u003eorg-activate-hidden-links-additional\u003c/span\u003e \u003cspan style=\"color: #bc6ec5;\"\u003e(\u003c/span\u003elimit\u003cspan style=\"color: #bc6ec5;\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color: #9f8766;\"\u003e\"Put invisible-property org-link on strings matching\u003c/span\u003e\n\u003cspan style=\"color: #9f8766;\"\u003e    `\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003eorg-hide-links-additional-re\u003c/span\u003e\u003cspan style=\"color: #9f8766;\"\u003e'.\"\u003c/span\u003e\n  \u003cspan style=\"color: #bc6ec5;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #4f97d7; font-weight: bold;\"\u003eif\u003c/span\u003e org-hidden-links-additional-re\n      \u003cspan style=\"color: #2d9574;\"\u003e(\u003c/span\u003ere-search-forward org-hidden-links-additional-re limit t\u003cspan style=\"color: #2d9574;\"\u003e)\u003c/span\u003e\n    \u003cspan style=\"color: #2d9574;\"\u003e(\u003c/span\u003egoto-char limit\u003cspan style=\"color: #2d9574;\"\u003e)\u003c/span\u003e\n    nil\u003cspan style=\"color: #bc6ec5;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #4f97d7; font-weight: bold;\"\u003edefun\u003c/span\u003e \u003cspan style=\"color: #bc6ec5; font-weight: bold;\"\u003eorg-hidden-links-hook-function\u003c/span\u003e \u003cspan style=\"color: #bc6ec5;\"\u003e()\u003c/span\u003e\n  \u003cspan style=\"color: #9f8766;\"\u003e\"Add rule for `\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003eorg-activate-hidden-links-additional\u003c/span\u003e\u003cspan style=\"color: #9f8766;\"\u003e'\u003c/span\u003e\n\u003cspan style=\"color: #9f8766;\"\u003e    to `\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003eorg-font-lock-extra-keywords\u003c/span\u003e\u003cspan style=\"color: #9f8766;\"\u003e'.\u003c/span\u003e\n\u003cspan style=\"color: #9f8766;\"\u003e    You can include this function in `\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003eorg-font-lock-set-keywords-hook\u003c/span\u003e\u003cspan style=\"color: #9f8766;\"\u003e'.\"\u003c/span\u003e\n  \u003cspan style=\"color: #bc6ec5;\"\u003e(\u003c/span\u003eadd-to-list 'org-font-lock-extra-keywords\n                '\u003cspan style=\"color: #2d9574;\"\u003e(\u003c/span\u003eorg-activate-hidden-links-additional\n                  \u003cspan style=\"color: #67b11d;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003e1\u003c/span\u003e '\u003cspan style=\"color: #b1951d;\"\u003e(\u003c/span\u003eface org-target invisible org-link\u003cspan style=\"color: #b1951d;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #67b11d;\"\u003e)\u003c/span\u003e\n                  \u003cspan style=\"color: #67b11d;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #a45bad;\"\u003e2\u003c/span\u003e '\u003cspan style=\"color: #b1951d;\"\u003e(\u003c/span\u003eface org-target invisible org-link\u003cspan style=\"color: #b1951d;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #67b11d;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #2d9574;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #bc6ec5;\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003eadd-hook 'org-font-lock-set-keywords-hook #'org-hidden-links-hook-function\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\u003cp\u003e\n\u003ccode\u003eSCHT:\u003c/code\u003e and metadata in \u003ccode\u003e:properties:\u003c/code\u003e - of my \u003ccode\u003eorg-drill\u003c/code\u003e practices, please just run \u003ccode\u003eorg-drill-strip-all-data\u003c/code\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org6bd620c\" class=\"outline-2\"\u003e\n\u003ch2 id=\"org6bd620c\"\u003e\u003cspan class=\"section-number-2\"\u003e2\u003c/span\u003e Definitions\u003c/h2\u003e\n\u003cdiv class=\"outline-text-2\" id=\"text-2\"\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgb31b910\" class=\"outline-3\"\u003e\n\u003ch3 id=\"orgb31b910\"\u003e\u003cspan class=\"section-number-3\"\u003e2.1\u003c/span\u003e \u003ca id=\"org3190950\"\u003eAlgebra\u003c/a\u003e\u003c/h3\u003e\n\u003cdiv class=\"outline-text-3\" id=\"text-2-1\"\u003e\n\u003cp\u003e\n\\arabicfont{الجبر} \u003ci\u003eal-jabr\u003c/i\u003e assemble parts\n\u003c/p\u003e\n\n\n\u003cp\u003e\nA system of parts based on given axioms (\u003ca href=\"#org9437c0f\"\u003eproperties\u003c/a\u003e) and operations on them.\n\u003c/p\u003e\n\n\n\u003cp\u003e\n\\additional\n\u003c/p\u003e\n\n\u003cp\u003e\nAdditional meanings:\n\u003c/p\u003e\n\n\u003col class=\"org-ol\"\u003e\n\u003cli\u003e\u003ca href=\"#org3190950\"\u003eAlgebra\u003c/a\u003e - a \u003ca href=\"#org3d30ead\"\u003eset\u003c/a\u003e with its \u003ca href=\"#orgc70e849\"\u003ealgebraic structure\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#orgf06c57a\"\u003eAbstract\u003c/a\u003e \u003ca href=\"#org3190950\"\u003ealgebra\u003c/a\u003e - the study of number systems and operations within them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#org3190950\"\u003eAlgebra\u003c/a\u003e - vector space over a field with a multiplication.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgce6e57c\" class=\"outline-4\"\u003e\n\u003ch4 id=\"orgce6e57c\"\u003e\u003cspan class=\"section-number-4\"\u003e2.1.1\u003c/span\u003e \u003ci\u003e*\u003c/i\u003e\u003c/h4\u003e\n\u003cdiv class=\"outline-text-4\" id=\"text-2-1-1\"\u003e\n\u003cp\u003e\n\u003ca id=\"org42bbfb9\"\u003eAlgebras\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org4cae81f\" class=\"outline-4\"\u003e\n\u003ch4 id=\"org4cae81f\"\u003e\u003cspan class=\"section-number-4\"\u003e2.1.2\u003c/span\u003e \u003ca id=\"org3514fb3\"\u003eAlgebraic\u003c/a\u003e\u003c/h4\u003e\n\u003cdiv class=\"outline-text-4\" id=\"text-2-1-2\"\u003e\n\u003cp\u003e\nComposite from simple parts.\n\u003c/p\u003e\n\n\u003cp\u003e\nAlso: \u003ca href=\"#org267a451\"\u003eAlgebraic data type\u003c/a\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org513cd2a\" class=\"outline-4\"\u003e\n\u003ch4 id=\"org513cd2a\"\u003e\u003cspan class=\"section-number-4\"\u003e2.1.3\u003c/span\u003e \u003ca id=\"orgc70e849\"\u003eAlgebraic structure\u003c/a\u003e\u003c/h4\u003e\n\u003cdiv class=\"outline-text-4\" id=\"text-2-1-3\"\u003e\n\u003cp\u003e\n\u003ci\u003e*\u003c/i\u003e includes axioms that must be satisfied and operations on the underlying (or \"carrier\") \u003ca href=\"#org3d30ead\"\u003eset\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp\u003e\nAn underlying \u003ca href=\"#org3d30ead\"\u003eset\u003c/a\u003e with \u003ci\u003e*\u003c/i\u003e on top of it also called \"an \u003ca href=\"#org3190950\"\u003ealgebra\u003c/a\u003e\".\n\u003c/p\u003e\n\n\u003cp\u003e\n\u003ci\u003e*\u003c/i\u003e include \u003ca href=\"#orge14b137\"\u003egroups\u003c/a\u003e, \u003ca href=\"#orge6ce09e\"\u003erings\u003c/a\u003e, fields, and lattices. More complex \u003ca href=\"#orgce7881f\"\u003estructures\u003c/a\u003e can be defined by introducing multiple operations, different underlying \u003ca href=\"#orgab73900\"\u003esets\u003c/a\u003e, or by altering the defining axioms. Examples of more complex \u003ci\u003e*\u003c/i\u003e can be many modules, \u003ca href=\"#org42bbfb9\"\u003ealgebras\u003c/a\u003e and other vector spaces, and any variations that the definition includes.\n\u003c/p\u003e\n\n\u003ctable id=\"org7330eda\" border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\"\u003e\n\u003ccaption class=\"t-above\"\u003e\u003cspan class=\"table-number\"\u003eTable 1:\u003c/span\u003e \u003ca href=\"#org0ac6029\"\u003eAlgebraic structures\u003c/a\u003e\u003c/caption\u003e\n\n\u003ccolgroup\u003e\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\n\u003ccol  class=\"org-left\" /\u003e\n\u003c/colgroup\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u0026#xa0;\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u003ca href=\"#org2f5079e\"\u003eClosure\u003c/a\u003e\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u003ca href=\"#org7b3ff35\"\u003eAssociativity\u003c/a\u003e\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u003ca href=\"#orgabd8bc9\"\u003eIdentity\u003c/a\u003e\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003eInvertability\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u003ca href=\"#org0417b04\"\u003eCommutativity\u003c/a\u003e\u003c/th\u003e\n\u003cth scope=\"col\" class=\"org-left\"\u003e\u003ca href=\"#orgc6eb90d\"\u003eDistributive\u003c/a\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eSemigroupoid\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eSmall \u003ca href=\"#org7cc368a\"\u003eCategory\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eGroupoid\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#orgd63148a\"\u003eMagma\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eQuasigroup\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eLoop\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#orgd1dfc26\"\u003eSemigroup\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#org2ee3a8d\"\u003eInverse\u003c/a\u003e \u003ca href=\"#orgd1dfc26\"\u003eSemigroup\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#org44eb77c\"\u003eMonoid\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#orgd69cf4d\"\u003eGroup\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#orgde5bb17\"\u003eAbelian group\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026#xa0;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eNon-unital \u003ca href=\"#org7974faf\"\u003ering\u003c/a\u003e (rng)\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; +\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; +\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; +\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003eSemiring (rig)\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; +\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd class=\"org-left\"\u003e\u003ca href=\"#org7974faf\"\u003eRing\u003c/a\u003e\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; + \u0026times;\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark; +\u003c/td\u003e\n\u003ctd class=\"org-left\"\u003e\u0026checkmark;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org3d2b19e\" class=\"outline-5\"\u003e\n\u003ch5 id=\"org3d2b19e\"\u003e\u003cspan class=\"section-number-5\"\u003e2.1.3.1\u003c/span\u003e \u003ci\u003e*\u003c/i\u003e\u003c/h5\u003e\n\u003cdiv class=\"outline-text-5\" id=\"text-2-1-3-1\"\u003e\n\u003cp\u003e\n\u003ca id=\"org0ac6029\"\u003eAlgebraic structures\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org0c2de8d\" class=\"outline-5\"\u003e\n\u003ch5 id=\"org0c2de8d\"\u003e\u003cspan class=\"section-number-5\"\u003e2.1.3.2\u003c/span\u003e \u003ca id=\"org8b706fc\"\u003eFundamental theorem of algebra\u003c/a\u003e\u003c/h5\u003e\n\u003cdiv class=\"outline-text-5\" id=\"text-2-1-3-2\"\u003e\n\u003cp\u003e\nAny non-\u003ca href=\"#org75ce064\"\u003econstant\u003c/a\u003e single-\u003ca href=\"#orgd7fe0a5\"\u003evariable\u003c/a\u003e polynomial with complex coefficients has at least one complex root.\n\u003c/p\u003e\n\n\u003cp\u003e\nFrom this definition follows \u003ca href=\"#orgdea5d84\"\u003eproperty\u003c/a\u003e that the field of complex numbers is algebraically \u003ca href=\"#orgcc8d7a1\"\u003eclosed\u003c/a\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org7934027\" class=\"outline-5\"\u003e\n\u003ch5 id=\"org7934027\"\u003e\u003cspan class=\"section-number-5\"\u003e2.1.3.3\u003c/span\u003e \u003ca id=\"orgd63148a\"\u003eMagma\u003c/a\u003e\u003c/h5\u003e\n\u003cdiv class=\"outline-text-5\" id=\"text-2-1-3-3\"\u003e\n\u003cp\u003e\n\u003ca href=\"#org3d30ead\"\u003eSet\u003c/a\u003e with a \u003ca href=\"#orgcbd8a40\"\u003ebinary\u003c/a\u003e \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e which form a \u003ca href=\"#org2f5079e\"\u003eclosure\u003c/a\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org5c309ec\" class=\"outline-6\"\u003e\n\u003ch6 id=\"org5c309ec\"\u003e\u003cspan class=\"section-number-6\"\u003e2.1.3.3.1\u003c/span\u003e \u003ca id=\"orgd1dfc26\"\u003eSemigroup\u003c/a\u003e\u003c/h6\u003e\n\u003cdiv class=\"outline-text-6\" id=\"text-2-1-3-3-1\"\u003e\n\u003cp\u003e\n\u003ca href=\"#orgd63148a\"\u003eMagma\u003c/a\u003e with \u003ca href=\"#orgbf725cc\"\u003eassociative property\u003c/a\u003e of \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp\u003e\nDefined in Haskell as:\n\u003c/p\u003e\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003e\u003cspan style=\"color: #00dede;\"\u003eclass\u003c/span\u003e \u003cspan style=\"color: #7a37ff;\"\u003eSemigroup\u003c/span\u003e a \u003cspan style=\"color: #00dede;\"\u003ewhere\u003c/span\u003e\n\u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #ca8300;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e::\u003c/span\u003e a \u003cspan style=\"color: #00dede;\"\u003e-\u0026gt;\u003c/span\u003e a \u003cspan style=\"color: #00dede;\"\u003e-\u0026gt;\u003c/span\u003e a\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org936f5e4\" class=\"outline-7\"\u003e\n\u003ch7 id=\"org936f5e4\"\u003e\u003cspan class=\"section-number-7\"\u003e2.1.3.3.1.1\u003c/span\u003e \u003ci\u003e*\u003c/i\u003e\u003c/h7\u003e\n\u003cdiv class=\"outline-text-7\" id=\"text-2-1-3-3-1-1\"\u003e\n\u003cp\u003e\n\u003ca id=\"org8368f5f\"\u003eSemigroups\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org4cc2417\" class=\"outline-7\"\u003e\n\u003ch7 id=\"org4cc2417\"\u003e\u003cspan class=\"section-number-7\"\u003e2.1.3.3.1.2\u003c/span\u003e \u003ca id=\"org44eb77c\"\u003eMonoid\u003c/a\u003e\u003c/h7\u003e\n\u003cdiv class=\"outline-text-7\" id=\"text-2-1-3-3-1-2\"\u003e\n\u003cp\u003e\n\u003ca href=\"#orgd1dfc26\"\u003eSemigroup\u003c/a\u003e with \u003ca href=\"#orgabd8bc9\"\u003eidentity\u003c/a\u003e element.\n\u003c/p\u003e\n\n\u003cp\u003e\nIdeal ground for any accumulation class.\n\u003c/p\u003e\n\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003e\u003cspan style=\"color: #00dede;\"\u003eclass\u003c/span\u003e \u003cspan style=\"color: #7a37ff;\"\u003eSemigroup\u003c/span\u003e m \u003cspan style=\"color: #00dede;\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan style=\"color: #7a37ff;\"\u003eMonoid\u003c/span\u003e m \u003cspan style=\"color: #00dede;\"\u003ewhere\u003c/span\u003e\n\u003cspan style=\"color: #ca8300;\"\u003emempty\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e::\u003c/span\u003e m\n\u003cspan style=\"color: #ca8300;\"\u003emconcat\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e::\u003c/span\u003e \u003cspan style=\"color: #4f97d7;\"\u003e[\u003c/span\u003em\u003cspan style=\"color: #4f97d7;\"\u003e]\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e-\u0026gt;\u003c/span\u003e m\n\u003cspan style=\"color: #ca8300;\"\u003emconcat\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e foldr mappend mempty\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\u003cp\u003e\nMore generally in \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e theory terms:\n\u003c/p\u003e\n\n\u003cp\u003e\n\u003ci\u003e*\u003c/i\u003e - the \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e \\( M \\) equipped with two \u003ca href=\"#orgeb72e4f\"\u003earrows\u003c/a\u003e:\n\u003c/p\u003e\n\n\u003cp\u003e\n\\( \\mu: \\ M \\ \\otimes \\ M \\ \\to M \\) called multiplication or \u003ca href=\"#org31d2448\"\u003eproduct\u003c/a\u003e, or tenzor \u003ca href=\"#org31d2448\"\u003eproduct\u003c/a\u003e.\n\\( \\eta: \\ I \\ \\to \\ M \\) called \u003ca href=\"#org07747e2\"\u003eunit\u003c/a\u003e,\n\u003c/p\u003e\n\n\u003cp\u003e\nso \\((M, \\ \\mu, \\ \\eta )\\). By its definition \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e (lets call it \\( \\mathb{C} \\) should have \\( \\otimes \\) and \\( I \\). \u003ca href=\"#orgfe80fa4\"\u003eWhere\u003c/a\u003e \\( \\otimes: \\ \\mathb{C} \\ \\times \\ \\mathb{C} \\ \\to \\ \\mathb{C} \\) is any \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e that combines \u003ca href=\"#orga6b8a88\"\u003eobjects\u003c/a\u003e and stays (\u003ca href=\"#orgcc8d7a1\"\u003eclosed\u003c/a\u003e) inside \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e, so it may be even already \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e given \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e of \u003ca href=\"#org4afb306\"\u003earrow\u003c/a\u003e \u003ca href=\"#orgec02ce8\"\u003ecomposition\u003c/a\u003e. And \\( I \\) is an \u003ca href=\"#orgabd8bc9\"\u003eidentity\u003c/a\u003e \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e of \\( \\otimes \\) \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp\u003e\n\u003ca href=\"#org7cc368a\"\u003eCategory\u003c/a\u003e that has one \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e - always a free \u003ca href=\"#org44eb77c\"\u003emonoid\u003c/a\u003e (from definition of \"\u003ca href=\"#org7cc368a\"\u003eCategory\u003c/a\u003e\" - \u003ca href=\"#orgec02ce8\"\u003ecomposition\u003c/a\u003e, and there is only one \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e so it is always also the \u003ca href=\"#orgabd8bc9\"\u003eidentity\u003c/a\u003e \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e).\n\u003c/p\u003e\n\n\u003cp\u003e\nFor example to represent the whole non-negative integers with the one \u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e and \u003ca href=\"#org0153f06\"\u003emorphism\u003c/a\u003e \"\\( 1 \\)\" is absolutely enough, \u003ca href=\"#orgec02ce8\"\u003ecomposition\u003c/a\u003e \u003ca href=\"#org2cf9909\"\u003eoperation\u003c/a\u003e is \"\\( + \\)\".\n\u003c/p\u003e\n\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003e\u003cspan style=\"color: #00dede;\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #ffa600;\"\u003eData.Monoid\u003c/span\u003e\n\u003cspan style=\"color: #00dede;\"\u003edo\u003c/span\u003e\n  show \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003emempty \u003cspan style=\"color: #00dede;\"\u003e::\u003c/span\u003e \u003cspan style=\"color: #7a37ff;\"\u003eNum\u003c/span\u003e a \u003cspan style=\"color: #00dede;\"\u003e=\u0026gt;\u003c/span\u003e \u003cspan style=\"color: #7a37ff;\"\u003eSum\u003c/span\u003e a\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color: #292929;\"\u003e-- \u003c/span\u003e\u003cspan style=\"color: #8b795e; background-color: #292e34;\"\u003e\"Sum {getSum = 0}\"\u003c/span\u003e\n  show \u003cspan style=\"color: #00dede;\"\u003e$\u003c/span\u003e \u003cspan style=\"color: #ffa600;\"\u003eSum\u003c/span\u003e \u003cspan style=\"color: #a45bad;\"\u003e1\u003c/span\u003e\n  \u003cspan style=\"color: #292929;\"\u003e-- \u003c/span\u003e\u003cspan style=\"color: #8b795e; background-color: #292e34;\"\u003e\"Sum {getSum = 1}\"\u003c/span\u003e\n  show \u003cspan style=\"color: #00dede;\"\u003e$\u003c/span\u003e \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #ffa600;\"\u003eSum\u003c/span\u003e \u003cspan style=\"color: #a45bad;\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #ffa600;\"\u003eSum\u003c/span\u003e \u003cspan style=\"color: #a45bad;\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #ffa600;\"\u003eSum\u003c/span\u003e \u003cspan style=\"color: #a45bad;\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color: #292929;\"\u003e-- \u003c/span\u003e\u003cspan style=\"color: #8b795e; background-color: #292e34;\"\u003e\"Sum {getSum = 3}\"\u003c/span\u003e\n  \u003cspan style=\"color: #292929;\"\u003e-- \u003c/span\u003e\u003cspan style=\"color: #8b795e; background-color: #292e34;\"\u003e...\u003c/span\u003e\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\u003cp\u003e\nAnd backwards connection.\nAny \u003ca href=\"#org38c1163\"\u003emonoidal\u003c/a\u003e \u003ca href=\"#org7cc368a\"\u003ecategory\u003c/a\u003e can be isomorphically transformed into one-\u003ca href=\"#orgf67d0a5\"\u003eobject\u003c/a\u003e bicategory, thou explaining or proving it is out of the current \u003ca href=\"#org97e7dc0\"\u003escope\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp\u003e\nAny \u003ca href=\"#orgfee5968\"\u003emonad\u003c/a\u003e is equivalent up to \u003ca href=\"#org34aad34\"\u003eisomorphism\u003c/a\u003e to \u003ca href=\"#org44eb77c\"\u003emonoid\u003c/a\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgab01c79\" class=\"outline-8\"\u003e\n\u003ch8 id=\"orgab01c79\"\u003e\u003cspan class=\"section-number-8\"\u003e2.1.3.3.1.2.1\u003c/span\u003e \u003ci\u003e*\u003c/i\u003e\u003c/h8\u003e\n\u003cdiv class=\"outline-text-8\" id=\"text-2-1-3-3-1-2-1\"\u003e\n\u003cp\u003e\n\u003ca id=\"org38c1163\"\u003eMonoidal\u003c/a\u003e\n\u003ca id=\"orgd72a112\"\u003eMonoids\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgc4fcd03\" class=\"outline-8\"\u003e\n\u003ch8 id=\"orgc4fcd03\"\u003e\u003cspan class=\"section-number-8\"\u003e2.1.3.3.1.2.2\u003c/span\u003e \u003ca id=\"orgccfa3e6\"\u003eMonoid properties\u003c/a\u003e\u003c/h8\u003e\n\u003cdiv class=\"outline-text-8\" id=\"text-2-1-3-3-1-2-2\"\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgfaa1849\" class=\"outline-9\"\u003e\n\u003ch9 id=\"orgfaa1849\"\u003e\u003cspan class=\"section-number-9\"\u003e2.1.3.3.1.2.2.1\u003c/span\u003e \u003ca id=\"orgd2f76fc\"\u003eMonoid left identity property\u003c/a\u003e\u003c/h9\u003e\n\u003cdiv class=\"outline-text-9\" id=\"text-2-1-3-3-1-2-2-1\"\u003e\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003emempty \u003cspan style=\"color: #ca8300;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e x \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e x\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgf7199f3\" class=\"outline-9\"\u003e\n\u003ch9 id=\"orgf7199f3\"\u003e\u003cspan class=\"section-number-9\"\u003e2.1.3.3.1.2.2.2\u003c/span\u003e \u003ca id=\"org1290897\"\u003eMonoid right identity property\u003c/a\u003e\u003c/h9\u003e\n\u003cdiv class=\"outline-text-9\" id=\"text-2-1-3-3-1-2-2-2\"\u003e\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003ex \u003cspan style=\"color: #ca8300;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e mempty \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e x\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgf28e0a6\" class=\"outline-9\"\u003e\n\u003ch9 id=\"orgf28e0a6\"\u003e\u003cspan class=\"section-number-9\"\u003e2.1.3.3.1.2.2.3\u003c/span\u003e \u003ca id=\"orgb0bcf62\"\u003eMonoid associativity property\u003c/a\u003e\u003c/h9\u003e\n\u003cdiv class=\"outline-text-9\" id=\"text-2-1-3-3-1-2-2-3\"\u003e\n\u003cdiv class=\"org-src-container\"\u003e\n\u003cpre class=\"src src-haskell\"\u003ex \u003cspan style=\"color: #ca8300;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e mempty \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e x \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003ey \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e z\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003ex \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e y\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e z\n\u003cspan style=\"color: #ca8300;\"\u003emconcat\u003c/span\u003e \u003cspan style=\"color: #00dede;\"\u003e=\u003c/span\u003e foldr \u003cspan style=\"color: #4f97d7;\"\u003e(\u003c/span\u003emempty \u003cspan style=\"color: #00dede;\"\u003e\u0026lt;\u0026gt;\u003c/span\u003e\u003cspan style=\"color: #4f97d7;\"\u003e)\u003c/span\u003e\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\u003cp\u003e\nEverything \u003ca href=\"#org85baf02\"\u003eassociative\u003c/a\u003e can be \u003ccode\u003emappend\u003c/code\u003e.\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org44a71db\" class=\"outline-8\"\u003e\n\u003ch8 id=\"org44a71db\"\u003e\u003cspan class=\"section-number-8\"\u003e2.1.3.3.1.2.3\u003c/span\u003e \u003ca id=\"org9fb8606\"\u003eCommutative monoid\u003c/a\u003e\u003c/h8\u003e\n\u003cdiv class=\"outline-text-8\" id=\"text-2-1-3-3-1-2-3\"\u003e\n\u003cp\u003e\n\u003ca href=\"#org2cf9909\"\u003eOperation\u003c/a\u003e that forms \u003ca href=\"#orga8f0c4a\"\u003estructure\u003c/a\u003e has \u003ca href=\"#org0417b04\"\u003ecommutativity\u003c/a\u003e \u003ca href=\"#orgdea5d84\"\u003eproperty\u003c/a\u003e:\n\\( x \\circ y = y \\circ x \\)\n\u003c/p\u003e\n\n\u003cp\u003e\nOpens a big abilities in concurrent and distributed processing.\n\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-orgfe74e91\" class=\"outline-9\"\u003e\n\u003ch9 id=\"orgfe74e91\"\u003e\u003cspan class=\"section-number-9\"\u003e2.1.3.3.1.2.3.1\u003c/span\u003e \u003ci\u003e*\u003c/i\u003e\u003c/h9\u003e\n\u003cdiv class=\"outline-text-9\" id=\"text-2-1-3-3-1-2-3-1\"\u003e\n\u003cp\u003e\n\u003ca id=\"orgfc7671e\"\u003eAbelian monoid\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv id=\"outline-container-org61a5b6b\" class=\"outline-8\"\u003e\n\u003ch8 id=\"org61a5b6b\"\u003e\u003cspan class=\"section-number-8\"\u003e2.1.3.3.1.2.4\u003c/span\u003e \u003ca id=\"orgd69cf4d\"\u003eGroup\u003c/a\u003e\u003c/h8\u003e\n\u003cdiv class=\"outline-text-8\"","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanton-latukha%2Ffundamental-haskell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanton-latukha%2Ffundamental-haskell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanton-latukha%2Ffundamental-haskell/lists"}