<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">There was this comics “how to build a horse” with different languages. I’ve always felt Haskell was missing. Found this on Quora - <a href="https://www.quora.com/How-do-you-build-a-horse-with-the-Haskell-programming-language/answer/Anton-Antich?ch=10&share=2296c629&srid=OfJ6">https://www.quora.com/How-do-you-build-a-horse-with-the-Haskell-programming-language/answer/Anton-Antich</a><div><br></div><div><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;"><b style="margin: 0px; padding: 0px; outline: 0px;">How to build a horse with Haskell.</b></p><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">Building just a horse is boring, so you generalize it to a spherical horse in vacuum that can represent other animals sufficiently well.</p><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">It takes 5 years, 43 research papers and only 3 people in the world can ride it (including SPJ).</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build a horse. It’s fast, but lazy.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build a beautiful, friendly horse. You call it Monadic Quadro-pedo-functorial Transporter. People are afraid to touch it and it dies of loneliness.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build something that is Maybe a horse.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">All your horses come in boxes with bottom.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You were a java programmer so you build a horse factory. It gives you Either a horse or a terrible runtime abomination.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build an existential horse. You can’t see or access its hoofs, tail, back, anything. It just sort of sits there and stares at you.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build an infinitely large horse. You can still ride it, because it’s lazy (<i style="margin: 0px; padding: 0px; outline: 0px;">it just sits there, just like the existential, and you crawl on its back slowly</i>).</p><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You tease Java programmers who can’t possibly ride infinite horses.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build an even faster horse that is unboxed. You notice it is eager.</p><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You build a higher-kinded Horsificator. It turns anything else into horses.</p><pre class="prettyprint linenums prettyprinted" style="margin-top: 1em; margin-bottom: 1em; padding: 0px; outline: 0px; background-color: rgb(244, 244, 244); word-wrap: normal; overflow-x: auto; direction: ltr; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><ol class="linenums" style="margin: 0px; padding: 0px; list-style-type: none; outline: 0px; counter-reset: prettyprintlinenumber 0; font-size: 12px;"><li class="L0" style="margin: 0px; padding: 0px 0px 0px 3em; outline: 0px; color: rgb(153, 153, 153); counter-increment: prettyprintlinenumber 1; position: relative;"><span class="pln" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 102);">data </span><span class="typ" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(144, 32, 0);">Horsificator</span><span class="pln" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 102);"> a </span><span class="pun" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 102);"> </span><span class="typ" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(144, 32, 0);">Horse</span><span class="pln" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 102);"> a </span><span class="pun" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(102, 102, 102);"> </span><span class="typ" style="margin: 0px; padding: 0px; outline: 0px; color: rgb(144, 32, 0);">Abomination</span></li></ol></pre><hr class="qtext_hr" style="margin: 2em auto; padding: 0px; outline: 0px; position: relative; width: 148px; height: 2px; background-color: rgb(230, 230, 230); border: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">You want to ride a rhino, but they normally would kill you.<br style="margin: 0px; padding: 0px; outline: 0px;">You build a horse typeclass. You make rhinos an instance of Horse.</p><p class="ui_qtext_para u-ltr u-text-align--start" style="margin: 0px 0px 1em; padding: 0px; outline: 0px; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 15px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); direction: ltr !important;">Polymorphic domestication!</p></div></body></html>