Compare commits

...

6 Commits

Author SHA1 Message Date
Yann Esposito (Yogsototh) 0fa1e45c28
wip 2021-11-19 18:33:49 +01:00
Yann Esposito (Yogsototh) 7d5c74e79c
Add a bit more philosohpy 2021-11-16 14:44:17 +01:00
Yann Esposito (Yogsototh) 0c91ab07c0
fix old gh-pages 2021-11-16 11:17:09 +01:00
Yann Esposito (Yogsototh) cfa4f0f7d7
Merge branch 'master' into eternal-lang 2021-11-16 11:15:51 +01:00
Yann Esposito (Yogsototh) 1b34ee0f1f
fixed dev and more pragmatic bloc 2021-11-16 00:28:23 +01:00
Yann Esposito (Yogsototh) 7c592372cf
Eternal language first draft 2021-11-15 10:08:34 +01:00
7 changed files with 236 additions and 110 deletions

View File

@ -12,9 +12,9 @@ blue=4
# magenta=5
# cyan=6
# white=7
green() { printf "$(tput setaf $green)%s$(tput sgr0)" "$*" }
yellow() { printf "$(tput setaf $yellow)%s$(tput sgr0)" "$*" }
blue() { printf "$(tput setaf $blue)%s$(tput sgr0)" "$*" }
green() { printf "$(tput setaf $green)%s$(tput sgr0)\n" "$*" }
yellow() { printf "$(tput setaf $yellow)%s$(tput sgr0)\n" "$*" }
blue() { printf "$(tput setaf $blue)%s$(tput sgr0)\n" "$*" }
pipegreen() {while read line; do green $line; done}
pipeyellow() {while read line; do yellow $line; done}
@ -23,4 +23,4 @@ pipeblue() {while read line; do blue $line; done}
tee >(lorri watch | sed 's/^/[lorri] /' | pipegreen ) \
>(./engine/serve.sh | sed 's/^/[http] /' | pipeyellow) \
>(./engine/auto-build.sh | sed 's/^/[make] /' | pipeblue) \
>(sleep 1 && open 'http://127.0.0.1:3000')
>(sleep 1 && open 'http://127.0.0.1:3077')

View File

@ -4694,12 +4694,12 @@ robustnessClusters=[[ "elli" , "cowboy" , "snap" , "yesod"
<id>http://yannesposito.com/Scratch/en/blog/Category-Theory-Presentation/index.html</id>
<published>2012-12-12T00:00:00Z</published>
<updated>2012-12-12T00:00:00Z</updated>
<summary type="html"><![CDATA[<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/>
<summary type="html"><![CDATA[<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/>
<p>Yesterday I was happy to make a presentation about Category Theory at <a href="http://www.meetup.com/riviera-scala-clojure">Riviera Scala Clojure Meetup</a> (note I used only Haskell for my examples).</p>
<ul><li><a href="http://yogsototh.github.com/Category-Theory-Presentation/categories.html">Click here to go to the HTML presentation.</a>
</li><li><a href="http://yogsototh.github.com/Category-Theory-Presentation/categories.pdf">Click Here to download the PDF slides (<span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span> not rendered properly)</a>
<ul><li><a href="http://yogsototh.github.io/Category-Theory-Presentation/categories.html">Click here to go to the HTML presentation.</a>
</li><li><a href="http://yogsototh.github.io/Category-Theory-Presentation/categories.pdf">Click Here to download the PDF slides (<span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span> not rendered properly)</a>
</li></ul>
<p>If you don't want to read them through an HTML presentations framework or downloading a big PDF
@ -4749,14 +4749,14 @@ just continue to read as a standard web page.
<section class="slide">
<h2 id="not-really-about-cat-glory">Not really about: Cat <span class="and">&amp;</span> glory</h2>
<figure>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/categlory.jpg" alt="Cat n glory" /> <figcaption>credit to Tokuhiro Kawai (川井徳寛)</figcaption>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/categlory.jpg" alt="Cat n glory" /> <figcaption>credit to Tokuhiro Kawai (川井徳寛)</figcaption>
</figure>
<div class="flush"></div></section>
<section class="slide">
<h2 id="general-overview">General Overview</h2>
<div style="float:right; width: 18%">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/eilenberg.gif" alt="Samuel Eilenberg"/> <img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/maclaine.jpg" alt="Saunders Mac Lane"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/eilenberg.gif" alt="Samuel Eilenberg"/> <img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/maclaine.jpg" alt="Saunders Mac Lane"/>
</div>
<p><em>Recent Math Field</em><br />1942-45, Samuel Eilenberg <span class="and">&amp;</span> Saunders Mac Lane</p>
@ -4782,7 +4782,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="math-programming-relation">Math Programming relation</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/buddha.gif" alt="Buddha Fractal"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/buddha.gif" alt="Buddha Fractal"/>
<p>Programming <em><span class="orange">is</span></em> doing Math</p>
<p>Strong relations between type theory and category theory.</p>
<p>Not convinced?<br />Certainly a <em>vocabulary</em> problem.</p>
@ -4790,7 +4790,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="vocabulary">Vocabulary</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mindblown.gif" alt="mind blown"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mindblown.gif" alt="mind blown"/>
<p>Math vocabulary used in this presentation:</p>
<blockquote style="width:55%">
<p>Category, Morphism, Associativity, Preorder, Functor, Endofunctor, Categorial property, Commutative diagram, Isomorph, Initial, Dual, Monoid, Natural transformation, Monad, Klesli arrows, κατα-morphism, ...</p>
@ -4798,7 +4798,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="programmer-translation">Programmer Translation</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/readingcat.jpg" alt="lolcat"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/readingcat.jpg" alt="lolcat"/>
<table style="width:50%">
<tr><th>
Mathematician
@ -4870,14 +4870,14 @@ LOLCat
<section class="slide">
<h2>Category: Objects</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/objects.png" alt="objects" />
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/objects.png" alt="objects" />
<p>\(\ob{\mathcal{C}}\) is a collection</p>
<div class="flush"></div></section>
<section class="slide">
<h2>Category: Morphisms</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/morphisms.png" alt="morphisms"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/morphisms.png" alt="morphisms"/>
<p>\(A\) and \(B\) objects of \(\C\)<br/>
\(\hom{A,B}\) is a collection of morphisms<br/>
@ -4889,18 +4889,18 @@ LOLCat
<p>Composition (∘): associate to each couple \(f:A→B, g:B→C\)
$$g∘f:A\rightarrow C$$
</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/composition.png" alt="composition"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/composition.png" alt="composition"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category laws: neutral element</h2>
<p>for each object \(X\), there is an \(\id_X:X→X\),<br/>
such that for each \(f:A→B\):</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/identity.png" alt="identity"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/identity.png" alt="identity"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category laws: Associativity</h2>
<p> Composition is associative:</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/associativecomposition.png" alt="associative composition"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/associativecomposition.png" alt="associative composition"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Commutative diagrams</h2>
@ -4908,7 +4908,7 @@ such that for each \(f:A→B\):</p>
<p>Two path with the same source and destination are equal.</p>
<figure class="left" style="max-width: 40%;margin-left: 5%;">
<img
src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/commutative-diagram-assoc.png"
src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/commutative-diagram-assoc.png"
alt="Commutative Diagram (Associativity)"/>
<figcaption>
\((h∘g)∘f = h∘(g∘f) \)
@ -4916,7 +4916,7 @@ such that for each \(f:A→B\):</p>
</figure>
<figure class="right" style="max-width:31%;margin-right: 10%;">
<img
src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/commutative-diagram-id.png"
src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/commutative-diagram-id.png"
alt="Commutative Diagram (Identity law)"/>
<figcaption>
\(id_B∘f = f = f∘id_A \)
@ -4927,7 +4927,7 @@ such that for each \(f:A→B\):</p>
<h2>Question Time!</h2>
<figure style="width:70%; margin:0 auto">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/batquestion.jpg" width="100%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/batquestion.jpg" width="100%"/>
<figcaption>
<em>- French-only joke -</em>
</figcaption>
@ -4937,20 +4937,20 @@ such that for each \(f:A→B\):</p>
<h2>Can this be a category?</h2>
<p>\(\ob{\C},\hom{\C}\) fixed, is there a valid ∘?</p>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example1.png" alt="Category example 1"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example1.png" alt="Category example 1"/>
<figcaption class="slide">
<span class="green">YES</span>
</figcaption>
</figure>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example2.png" alt="Category example 2"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example2.png" alt="Category example 2"/>
<figcaption class="slide">
no candidate for \(g∘f\)
<br/><span class="red">NO</span>
</figcaption>
</figure>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example3.png" alt="Category example 3"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example3.png" alt="Category example 3"/>
<figcaption class="slide">
<span class="green">YES</span>
</figcaption>
@ -4959,14 +4959,14 @@ such that for each \(f:A→B\):</p>
<section class="slide">
<h2>Can this be a category?</h2>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example4.png" alt="Category example 4"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example4.png" alt="Category example 4"/>
<figcaption class="slide">
no candidate for \(f:C→B\)
<br/><span class="red">NO</span>
</figcaption>
</figure>
<figure class="right" style="min-width: 50%">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example5.png" alt="Category example 5"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example5.png" alt="Category example 5"/>
<figcaption class="slide">
\((h∘g)∘f=\id_B∘f=f\)<br/>
\(h∘(g∘f)=h∘\id_A=h\)<br/>
@ -4979,7 +4979,7 @@ such that for each \(f:A→B\):</p>
<h2>Categories Examples</h2>
<figure style="width:70%; margin:0 auto">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/basket_of_cats.jpg" alt="Basket of cats"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/basket_of_cats.jpg" alt="Basket of cats"/>
<figcaption>
<em>- Basket of Cats -</em>
</figcaption>
@ -5002,7 +5002,7 @@ such that for each \(f:A→B\):</p>
<div class="flush"></div></section>
<section class="slide">
<h2>Categories Everywhere?</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/cats-everywhere.jpg" alt="Cats everywhere"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/cats-everywhere.jpg" alt="Cats everywhere"/>
<ul>
<li>\(\Mon\): (monoids, monoid morphisms,∘)</li>
<li>\(\Vec\): (Vectorial spaces, linear functions,∘)</li>
@ -5017,7 +5017,7 @@ such that for each \(f:A→B\):</p>
<h2>Smaller Examples</h2>
<h3>Strings</h3>
<img class="right" style="max-width:17%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/strings.png" alt="Monoids are one object categories"/>
<img class="right" style="max-width:17%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/strings.png" alt="Monoids are one object categories"/>
<ul>
<li> \(\ob{Str}\) is a singleton </li>
<li> \(\hom{Str}\) each string </li>
@ -5033,7 +5033,7 @@ such that for each \(f:A→B\):</p>
<h3>Graph</h3>
<figure class="right" style="max-width:40%" >
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/graph-category.png" alt="Each graph is a category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/graph-category.png" alt="Each graph is a category"/>
</figure>
<ul>
<li> \(\ob{G}\) are vertices</li>
@ -5049,12 +5049,12 @@ such that for each \(f:A→B\):</p>
<h2>Number construction</h2>
<h3>Each Numbers as a whole category</h3>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/numbers.png" alt="Each number as a category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/numbers.png" alt="Each number as a category"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Degenerated Categories: Monoids</h2>
<img class="right" style="max-width:17%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/monoid.png" alt="Monoids are one object categories"/>
<img class="right" style="max-width:17%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/monoid.png" alt="Monoids are one object categories"/>
<p>Each Monoid \((M,e,⊙): \ob{M}=\{∙\},\hom{M}=M,\circ = ⊙\)</p>
<p class="orange">Only one object.</p>
<p>Examples:</p>
@ -5072,12 +5072,12 @@ such that for each \(f:A→B\):</p>
<p><em class="orange">At most one morphism between two objects.</em></p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/preorder.png" alt="preorder category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/preorder.png" alt="preorder category"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Degenerated Categories: Discrete Categories</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/set.png" alt="Any set can be a category"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/set.png" alt="Any set can be a category"/>
<h3>Any Set</h3>
<p>Any set \(E: \ob{E}=E, \hom{x,y}=\{x\} ⇔ x=y \)</p>
<p class="orange">Only identities</p>
@ -5103,7 +5103,7 @@ such that for each \(f:A→B\):</p>
<div class="flush"></div></section>
<section class="slide">
<h2 id="isomorph">Isomorph</h2>
<p><img class="right" alt="isomorph cats" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/isomorph-cats.jpg" /> <em class="orange">isomorphism</em>: \(f:A→B\) which can be &quot;undone&quot; <em>i.e.</em><br />\(∃g:B→A\), \(g∘f=id_A\) <span class="and">&amp;</span> \(f∘g=id_B\)<br />in this case, \(A\) <span class="and">&amp;</span> \(B\) are <em class="orange">isomorphic</em>.</p>
<p><img class="right" alt="isomorph cats" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/isomorph-cats.jpg" /> <em class="orange">isomorphism</em>: \(f:A→B\) which can be &quot;undone&quot; <em>i.e.</em><br />\(∃g:B→A\), \(g∘f=id_A\) <span class="and">&amp;</span> \(f∘g=id_B\)<br />in this case, \(A\) <span class="and">&amp;</span> \(B\) are <em class="orange">isomorphic</em>.</p>
<p><span class="orange">A≌B</span> means A and B are essentially the same.<br />In Category Theory, <span class="orange">=</span> is in fact mostly <span class="orange"></span>.<br />For example in commutative diagrams.</p>
<div class="flush"></div></section>
<section class="slide">
@ -5126,28 +5126,28 @@ A <em>functor</em> <span class="orange">\(\F\)</span> from <span class="blue">\(
<section class="slide">
<h2>Functor Example (ob → ob)</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor Example (hom → hom)</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor-morphism.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor-morphism.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor Example</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor-morphism-color.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor-morphism-color.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Endofunctors</h2>
<p>An <em>endofunctor</em> for \(\C\) is a functor \(F:\C→\C\).</p>
<img width="75%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/endofunctor.png" alt="Endofunctor"/>
<img width="75%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/endofunctor.png" alt="Endofunctor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category of Categories</h2>
<img style="min-width:43%; width: 43%" class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/fractalcat.jpg" />
<img style="min-width:43%; width: 43%" class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/fractalcat.jpg" />
<p>Categories and functors form a category: \(\Cat\)</p>
<ul><li>\(\ob{\Cat}\) are categories
@ -5176,7 +5176,7 @@ A <em>functor</em> <span class="orange">\(\F\)</span> from <span class="blue">\(
<p>Category \(\Hask\):</p>
<img class="right" style="max-width:30%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask.png" alt="Haskell Category Representation"/>
<img class="right" style="max-width:30%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask.png" alt="Haskell Category Representation"/>
<ul><li>
\(\ob{\Hask} = \) Haskell types
@ -5266,7 +5266,7 @@ fmap head [[1,2,3],[4,5,6]] == [1,4]</code></pre>
<p>Put normal function inside a container. Ex: list, trees...<p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/boxfunctor.png" alt="Haskell Functor as a box play"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/boxfunctor.png" alt="Haskell Functor as a box play"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Haskell Functor properties</h2>
@ -5283,7 +5283,7 @@ fmap head [[1,2,3],[4,5,6]] == [1,4]</code></pre>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor as boxes</h2>
@ -5291,7 +5291,7 @@ Haskell types look like a fractal:</p>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-objects.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-objects.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor as boxes</h2>
@ -5299,7 +5299,7 @@ Haskell types look like a fractal:</p>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-morphisms.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-morphisms.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="non-haskell-hasks-functors">&quot;Non Haskell&quot; Hask's Functors</h2>
@ -5336,7 +5336,7 @@ Haskell types look like a fractal:</p>
<div class="flush"></div></section>
<section class="slide">
<h2 id="category-of-hask-endofunctors">Category of \(\Hask\) Endofunctors</h2>
<img width="50%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category of Hask endofunctors" />
<img width="50%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category of Hask endofunctors" />
<div class="flush"></div></section>
<section class="slide">
<h2 id="category-of-functors">Category of Functors</h2>
@ -5351,7 +5351,7 @@ Haskell types look like a fractal:</p>
<section class="slide">
<h2 id="natural-transformations">Natural Transformations</h2>
<p>Let \(F\) and \(G\) be two functors from \(\C\) to \(\D\).</p>
<p><img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/natural-transformation.png" alt="Natural transformation commutative diagram" class="right"/> <em>A natural transformation:</em> familly η ; \(η_X\in\hom{\D}\) for \(X\in\ob{\C}\) s.t.</p>
<p><img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/natural-transformation.png" alt="Natural transformation commutative diagram" class="right"/> <em>A natural transformation:</em> familly η ; \(η_X\in\hom{\D}\) for \(X\in\ob{\C}\) s.t.</p>
<p>ex: between Haskell functors; <code>F a -&gt; G a</code><br />Rearragement functions only.</p>
<div class="flush"></div></section>
<section class="slide">
@ -5361,9 +5361,9 @@ toList :: [a] -> List a
toList [] = Nil
toList (x:xs) = Cons x (toList xs)</code></pre>
<p><code>toList</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>List</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left: 1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-list-tree.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left: 1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-list-tree.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/list-tree-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/list-tree-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
</figure>
<div class="flush"></div></section>
@ -5374,9 +5374,9 @@ toHList :: List a -> [a]
toHList Nil = []
toHList (Cons x xs) = x:toHList xs</code></pre>
<p><code>toHList</code> is a natural transformation. It is also a morphism from <code>List</code> to <code>[]</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-tree-list.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-tree-list.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/tree-list-endofunctor-morphism.png" alt="natural transformation commutative diagram"/> <figcaption><code>toList . toHList = id</code> <span class="and">&amp;</span> <code>toHList . toList = id</code> <span style="visibility:hidden"><span class="and">&amp;</span></span><br/> therefore <code>[]</code> <span class="and">&amp;</span> <code>List</code> are <span class="orange">isomorph</span>. </figcaption>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/tree-list-endofunctor-morphism.png" alt="natural transformation commutative diagram"/> <figcaption><code>toList . toHList = id</code> <span class="and">&amp;</span> <code>toHList . toList = id</code> <span style="visibility:hidden"><span class="and">&amp;</span></span><br/> therefore <code>[]</code> <span class="and">&amp;</span> <code>List</code> are <span class="orange">isomorph</span>. </figcaption>
</figure>
<div class="flush"></div></section>
@ -5386,9 +5386,9 @@ toHList (Cons x xs) = x:toHList xs</code></pre>
toMaybe [] = Nothing
toMaybe (x:xs) = Just x</code></pre>
<p><code>toMaybe</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>Maybe</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-list-maybe.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-list-maybe.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/list-maybe-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/list-maybe-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
</figure>
<div class="flush"></div></section>
@ -5398,9 +5398,9 @@ toMaybe (x:xs) = Just x</code></pre>
mToList Nothing = []
mToList Just x = [x]</code></pre>
<p><code>toMaybe</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>Maybe</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-maybe-list.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-maybe-list.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/maybe-list-endofunctor-morphsm.png" alt="relation between [] and Maybe"/> <figcaption>There is <span class="red">no isomorphism</span>.<br/> Hint: <code>Bool</code> lists longer than 1. </figcaption>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/maybe-list-endofunctor-morphsm.png" alt="relation between [] and Maybe"/> <figcaption>There is <span class="red">no isomorphism</span>.<br/> Hint: <code>Bool</code> lists longer than 1. </figcaption>
</figure>
<div class="flush"></div></section>
@ -5559,11 +5559,11 @@ drawPoint p = do
<div class="flush"></div></section>
<section class="slide">
<h2 id="fold"><code>fold</code></h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/tower_folded.gif" alt="fold" style="width:50%;max-width:50%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/tower_folded.gif" alt="fold" style="width:50%;max-width:50%"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="κατα-morphism">κατα-morphism</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/earth_catamorphed.gif" alt="catamorphism" style="width:90%;max-width:90%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/earth_catamorphed.gif" alt="catamorphism" style="width:90%;max-width:90%"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="κατα-morphism-fold-generalization">κατα-morphism: fold generalization</h2>

View File

@ -114,7 +114,7 @@ Learn Haskell Fast and Hard <span class="nicer">»</span>
<a href="../../../Scratch/en/blog/Social-link-the-right-way/"><span class="small">2013-03-14</span> <div class="inlineblockimg"><img src="../../../Scratch/img/blog/Social-link-the-right-way/main.png" alt="Social link the right way" class="inlineimage" /></div> Social link the right way</a>
</li>
<li>
<a href="../../../Scratch/en/blog/Category-Theory-Presentation/"><span class="small">2012-12-12</span> <div class="inlineblockimg"><img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category Theory Presentation" class="inlineimage" /></div> Category Theory Presentation</a>
<a href="../../../Scratch/en/blog/Category-Theory-Presentation/"><span class="small">2012-12-12</span> <div class="inlineblockimg"><img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category Theory Presentation" class="inlineimage" /></div> Category Theory Presentation</a>
</li>
<li>
<a href="../../../Scratch/en/blog/Haskell-OpenGL-Mandelbrot/"><span class="small">2012-06-15</span> <div class="inlineblockimg"><img src="../../../Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" alt="Haskell Progressive Example" class="inlineimage" /></div> Haskell Progressive Example</a>

View File

@ -4689,12 +4689,12 @@ robustnessClusters=[[ "elli" , "cowboy" , "snap" , "yesod"
<id>http://yannesposito.com/Scratch/fr/blog/Category-Theory-Presentation/index.html</id>
<published>2012-12-12T00:00:00Z</published>
<updated>2012-12-12T00:00:00Z</updated>
<summary type="html"><![CDATA[<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/>
<summary type="html"><![CDATA[<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Cateogry of Hask's endofunctors"/>
<p>Yesterday I was happy to make a presentation about Category Theory at <a href="http://www.meetup.com/riviera-scala-clojure">Riviera Scala Clojure Meetup</a> (note I used only Haskell for my examples).</p>
<ul><li><a href="http://yogsototh.github.com/Category-Theory-Presentation/categories.html">Click here to go to the HTML presentation.</a>
</li><li><a href="http://yogsototh.github.com/Category-Theory-Presentation/categories.pdf">Click Here to download the PDF slides (<span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span> not rendered properly)</a>
<ul><li><a href="http://yogsototh.github.io/Category-Theory-Presentation/categories.html">Click here to go to the HTML presentation.</a>
</li><li><a href="http://yogsototh.github.io/Category-Theory-Presentation/categories.pdf">Click Here to download the PDF slides (<span style="text-transform: uppercase">L<sup style="vertical-align: 0.15em; margin-left: -0.36em; margin-right: -0.15em; font-size: .85em">a</sup>T<sub style="vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em">e</sub>X</span> not rendered properly)</a>
</li></ul>
<p>If you don't want to read them through an HTML presentations framework or downloading a big PDF
@ -4744,14 +4744,14 @@ just continue to read as a standard web page.
<section class="slide">
<h2 id="not-really-about-cat-glory">Not really about: Cat <span class="and">&amp;</span> glory</h2>
<figure>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/categlory.jpg" alt="Cat n glory" /> <figcaption>credit to Tokuhiro Kawai (川井徳寛)</figcaption>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/categlory.jpg" alt="Cat n glory" /> <figcaption>credit to Tokuhiro Kawai (川井徳寛)</figcaption>
</figure>
<div class="flush"></div></section>
<section class="slide">
<h2 id="general-overview">General Overview</h2>
<div style="float:right; width: 18%">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/eilenberg.gif" alt="Samuel Eilenberg"/> <img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/maclaine.jpg" alt="Saunders Mac Lane"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/eilenberg.gif" alt="Samuel Eilenberg"/> <img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/maclaine.jpg" alt="Saunders Mac Lane"/>
</div>
<p><em>Recent Math Field</em><br />1942-45, Samuel Eilenberg <span class="and">&amp;</span> Saunders Mac Lane</p>
@ -4777,7 +4777,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="math-programming-relation">Math Programming relation</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/buddha.gif" alt="Buddha Fractal"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/buddha.gif" alt="Buddha Fractal"/>
<p>Programming <em><span class="orange">is</span></em> doing Math</p>
<p>Strong relations between type theory and category theory.</p>
<p>Not convinced?<br />Certainly a <em>vocabulary</em> problem.</p>
@ -4785,7 +4785,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="vocabulary">Vocabulary</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mindblown.gif" alt="mind blown"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mindblown.gif" alt="mind blown"/>
<p>Math vocabulary used in this presentation:</p>
<blockquote style="width:55%">
<p>Category, Morphism, Associativity, Preorder, Functor, Endofunctor, Categorial property, Commutative diagram, Isomorph, Initial, Dual, Monoid, Natural transformation, Monad, Klesli arrows, κατα-morphism, ...</p>
@ -4793,7 +4793,7 @@ just continue to read as a standard web page.
<div class="flush"></div></section>
<section class="slide">
<h2 id="programmer-translation">Programmer Translation</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/readingcat.jpg" alt="lolcat"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/readingcat.jpg" alt="lolcat"/>
<table style="width:50%">
<tr><th>
Mathematician
@ -4865,14 +4865,14 @@ LOLCat
<section class="slide">
<h2>Category: Objects</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/objects.png" alt="objects" />
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/objects.png" alt="objects" />
<p>\(\ob{\mathcal{C}}\) is a collection</p>
<div class="flush"></div></section>
<section class="slide">
<h2>Category: Morphisms</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/morphisms.png" alt="morphisms"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/morphisms.png" alt="morphisms"/>
<p>\(A\) and \(B\) objects of \(\C\)<br/>
\(\hom{A,B}\) is a collection of morphisms<br/>
@ -4884,18 +4884,18 @@ LOLCat
<p>Composition (∘): associate to each couple \(f:A→B, g:B→C\)
$$g∘f:A\rightarrow C$$
</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/composition.png" alt="composition"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/composition.png" alt="composition"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category laws: neutral element</h2>
<p>for each object \(X\), there is an \(\id_X:X→X\),<br/>
such that for each \(f:A→B\):</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/identity.png" alt="identity"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/identity.png" alt="identity"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category laws: Associativity</h2>
<p> Composition is associative:</p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/associativecomposition.png" alt="associative composition"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/associativecomposition.png" alt="associative composition"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Commutative diagrams</h2>
@ -4903,7 +4903,7 @@ such that for each \(f:A→B\):</p>
<p>Two path with the same source and destination are equal.</p>
<figure class="left" style="max-width: 40%;margin-left: 5%;">
<img
src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/commutative-diagram-assoc.png"
src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/commutative-diagram-assoc.png"
alt="Commutative Diagram (Associativity)"/>
<figcaption>
\((h∘g)∘f = h∘(g∘f) \)
@ -4911,7 +4911,7 @@ such that for each \(f:A→B\):</p>
</figure>
<figure class="right" style="max-width:31%;margin-right: 10%;">
<img
src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/commutative-diagram-id.png"
src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/commutative-diagram-id.png"
alt="Commutative Diagram (Identity law)"/>
<figcaption>
\(id_B∘f = f = f∘id_A \)
@ -4922,7 +4922,7 @@ such that for each \(f:A→B\):</p>
<h2>Question Time!</h2>
<figure style="width:70%; margin:0 auto">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/batquestion.jpg" width="100%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/batquestion.jpg" width="100%"/>
<figcaption>
<em>- French-only joke -</em>
</figcaption>
@ -4932,20 +4932,20 @@ such that for each \(f:A→B\):</p>
<h2>Can this be a category?</h2>
<p>\(\ob{\C},\hom{\C}\) fixed, is there a valid ∘?</p>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example1.png" alt="Category example 1"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example1.png" alt="Category example 1"/>
<figcaption class="slide">
<span class="green">YES</span>
</figcaption>
</figure>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example2.png" alt="Category example 2"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example2.png" alt="Category example 2"/>
<figcaption class="slide">
no candidate for \(g∘f\)
<br/><span class="red">NO</span>
</figcaption>
</figure>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example3.png" alt="Category example 3"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example3.png" alt="Category example 3"/>
<figcaption class="slide">
<span class="green">YES</span>
</figcaption>
@ -4954,14 +4954,14 @@ such that for each \(f:A→B\):</p>
<section class="slide">
<h2>Can this be a category?</h2>
<figure class="left">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example4.png" alt="Category example 4"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example4.png" alt="Category example 4"/>
<figcaption class="slide">
no candidate for \(f:C→B\)
<br/><span class="red">NO</span>
</figcaption>
</figure>
<figure class="right" style="min-width: 50%">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-example5.png" alt="Category example 5"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-example5.png" alt="Category example 5"/>
<figcaption class="slide">
\((h∘g)∘f=\id_B∘f=f\)<br/>
\(h∘(g∘f)=h∘\id_A=h\)<br/>
@ -4974,7 +4974,7 @@ such that for each \(f:A→B\):</p>
<h2>Categories Examples</h2>
<figure style="width:70%; margin:0 auto">
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/basket_of_cats.jpg" alt="Basket of cats"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/basket_of_cats.jpg" alt="Basket of cats"/>
<figcaption>
<em>- Basket of Cats -</em>
</figcaption>
@ -4997,7 +4997,7 @@ such that for each \(f:A→B\):</p>
<div class="flush"></div></section>
<section class="slide">
<h2>Categories Everywhere?</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/cats-everywhere.jpg" alt="Cats everywhere"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/cats-everywhere.jpg" alt="Cats everywhere"/>
<ul>
<li>\(\Mon\): (monoids, monoid morphisms,∘)</li>
<li>\(\Vec\): (Vectorial spaces, linear functions,∘)</li>
@ -5012,7 +5012,7 @@ such that for each \(f:A→B\):</p>
<h2>Smaller Examples</h2>
<h3>Strings</h3>
<img class="right" style="max-width:17%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/strings.png" alt="Monoids are one object categories"/>
<img class="right" style="max-width:17%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/strings.png" alt="Monoids are one object categories"/>
<ul>
<li> \(\ob{Str}\) is a singleton </li>
<li> \(\hom{Str}\) each string </li>
@ -5028,7 +5028,7 @@ such that for each \(f:A→B\):</p>
<h3>Graph</h3>
<figure class="right" style="max-width:40%" >
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/graph-category.png" alt="Each graph is a category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/graph-category.png" alt="Each graph is a category"/>
</figure>
<ul>
<li> \(\ob{G}\) are vertices</li>
@ -5044,12 +5044,12 @@ such that for each \(f:A→B\):</p>
<h2>Number construction</h2>
<h3>Each Numbers as a whole category</h3>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/numbers.png" alt="Each number as a category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/numbers.png" alt="Each number as a category"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Degenerated Categories: Monoids</h2>
<img class="right" style="max-width:17%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/monoid.png" alt="Monoids are one object categories"/>
<img class="right" style="max-width:17%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/monoid.png" alt="Monoids are one object categories"/>
<p>Each Monoid \((M,e,⊙): \ob{M}=\{∙\},\hom{M}=M,\circ = ⊙\)</p>
<p class="orange">Only one object.</p>
<p>Examples:</p>
@ -5067,12 +5067,12 @@ such that for each \(f:A→B\):</p>
<p><em class="orange">At most one morphism between two objects.</em></p>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/preorder.png" alt="preorder category"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/preorder.png" alt="preorder category"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Degenerated Categories: Discrete Categories</h2>
<img class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/set.png" alt="Any set can be a category"/>
<img class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/set.png" alt="Any set can be a category"/>
<h3>Any Set</h3>
<p>Any set \(E: \ob{E}=E, \hom{x,y}=\{x\} ⇔ x=y \)</p>
<p class="orange">Only identities</p>
@ -5098,7 +5098,7 @@ such that for each \(f:A→B\):</p>
<div class="flush"></div></section>
<section class="slide">
<h2 id="isomorph">Isomorph</h2>
<p><img class="right" alt="isomorph cats" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/isomorph-cats.jpg" /> <em class="orange">isomorphism</em>: \(f:A→B\) which can be &quot;undone&quot; <em>i.e.</em><br />\(∃g:B→A\), \(g∘f=id_A\) <span class="and">&amp;</span> \(f∘g=id_B\)<br />in this case, \(A\) <span class="and">&amp;</span> \(B\) are <em class="orange">isomorphic</em>.</p>
<p><img class="right" alt="isomorph cats" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/isomorph-cats.jpg" /> <em class="orange">isomorphism</em>: \(f:A→B\) which can be &quot;undone&quot; <em>i.e.</em><br />\(∃g:B→A\), \(g∘f=id_A\) <span class="and">&amp;</span> \(f∘g=id_B\)<br />in this case, \(A\) <span class="and">&amp;</span> \(B\) are <em class="orange">isomorphic</em>.</p>
<p><span class="orange">A≌B</span> means A and B are essentially the same.<br />In Category Theory, <span class="orange">=</span> is in fact mostly <span class="orange"></span>.<br />For example in commutative diagrams.</p>
<div class="flush"></div></section>
<section class="slide">
@ -5121,28 +5121,28 @@ A <em>functor</em> <span class="orange">\(\F\)</span> from <span class="blue">\(
<section class="slide">
<h2>Functor Example (ob → ob)</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor Example (hom → hom)</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor-morphism.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor-morphism.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor Example</h2>
<img width="65%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/functor-morphism-color.png" alt="Functor"/>
<img width="65%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/functor-morphism-color.png" alt="Functor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Endofunctors</h2>
<p>An <em>endofunctor</em> for \(\C\) is a functor \(F:\C→\C\).</p>
<img width="75%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/endofunctor.png" alt="Endofunctor"/>
<img width="75%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/endofunctor.png" alt="Endofunctor"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Category of Categories</h2>
<img style="min-width:43%; width: 43%" class="right" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/fractalcat.jpg" />
<img style="min-width:43%; width: 43%" class="right" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/fractalcat.jpg" />
<p>Categories and functors form a category: \(\Cat\)</p>
<ul><li>\(\ob{\Cat}\) are categories
@ -5171,7 +5171,7 @@ A <em>functor</em> <span class="orange">\(\F\)</span> from <span class="blue">\(
<p>Category \(\Hask\):</p>
<img class="right" style="max-width:30%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask.png" alt="Haskell Category Representation"/>
<img class="right" style="max-width:30%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask.png" alt="Haskell Category Representation"/>
<ul><li>
\(\ob{\Hask} = \) Haskell types
@ -5261,7 +5261,7 @@ fmap head [[1,2,3],[4,5,6]] == [1,4]</code></pre>
<p>Put normal function inside a container. Ex: list, trees...<p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/boxfunctor.png" alt="Haskell Functor as a box play"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/boxfunctor.png" alt="Haskell Functor as a box play"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Haskell Functor properties</h2>
@ -5278,7 +5278,7 @@ fmap head [[1,2,3],[4,5,6]] == [1,4]</code></pre>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor as boxes</h2>
@ -5286,7 +5286,7 @@ Haskell types look like a fractal:</p>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-objects.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-objects.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2>Functor as boxes</h2>
@ -5294,7 +5294,7 @@ Haskell types look like a fractal:</p>
<p>Haskell functor can be seen as boxes containing all Haskell types and functions.
Haskell types look like a fractal:</p>
<img width="70%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-morphisms.png" alt="Haskell functor representation"/>
<img width="70%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/hask-endofunctor-morphisms.png" alt="Haskell functor representation"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="non-haskell-hasks-functors">&quot;Non Haskell&quot; Hask's Functors</h2>
@ -5331,7 +5331,7 @@ Haskell types look like a fractal:</p>
<div class="flush"></div></section>
<section class="slide">
<h2 id="category-of-hask-endofunctors">Category of \(\Hask\) Endofunctors</h2>
<img width="50%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category of Hask endofunctors" />
<img width="50%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category of Hask endofunctors" />
<div class="flush"></div></section>
<section class="slide">
<h2 id="category-of-functors">Category of Functors</h2>
@ -5346,7 +5346,7 @@ Haskell types look like a fractal:</p>
<section class="slide">
<h2 id="natural-transformations">Natural Transformations</h2>
<p>Let \(F\) and \(G\) be two functors from \(\C\) to \(\D\).</p>
<p><img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/natural-transformation.png" alt="Natural transformation commutative diagram" class="right"/> <em>A natural transformation:</em> familly η ; \(η_X\in\hom{\D}\) for \(X\in\ob{\C}\) s.t.</p>
<p><img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/natural-transformation.png" alt="Natural transformation commutative diagram" class="right"/> <em>A natural transformation:</em> familly η ; \(η_X\in\hom{\D}\) for \(X\in\ob{\C}\) s.t.</p>
<p>ex: between Haskell functors; <code>F a -&gt; G a</code><br />Rearragement functions only.</p>
<div class="flush"></div></section>
<section class="slide">
@ -5356,9 +5356,9 @@ toList :: [a] -> List a
toList [] = Nil
toList (x:xs) = Cons x (toList xs)</code></pre>
<p><code>toList</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>List</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left: 1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-list-tree.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left: 1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-list-tree.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/list-tree-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/list-tree-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
</figure>
<div class="flush"></div></section>
@ -5369,9 +5369,9 @@ toHList :: List a -> [a]
toHList Nil = []
toHList (Cons x xs) = x:toHList xs</code></pre>
<p><code>toHList</code> is a natural transformation. It is also a morphism from <code>List</code> to <code>[]</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-tree-list.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-tree-list.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/tree-list-endofunctor-morphism.png" alt="natural transformation commutative diagram"/> <figcaption><code>toList . toHList = id</code> <span class="and">&amp;</span> <code>toHList . toList = id</code> <span style="visibility:hidden"><span class="and">&amp;</span></span><br/> therefore <code>[]</code> <span class="and">&amp;</span> <code>List</code> are <span class="orange">isomorph</span>. </figcaption>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/tree-list-endofunctor-morphism.png" alt="natural transformation commutative diagram"/> <figcaption><code>toList . toHList = id</code> <span class="and">&amp;</span> <code>toHList . toList = id</code> <span style="visibility:hidden"><span class="and">&amp;</span></span><br/> therefore <code>[]</code> <span class="and">&amp;</span> <code>List</code> are <span class="orange">isomorph</span>. </figcaption>
</figure>
<div class="flush"></div></section>
@ -5381,9 +5381,9 @@ toHList (Cons x xs) = x:toHList xs</code></pre>
toMaybe [] = Nothing
toMaybe (x:xs) = Just x</code></pre>
<p><code>toMaybe</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>Maybe</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-list-maybe.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-list-maybe.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/list-maybe-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/list-maybe-endofunctor-morphism.png" alt="natural transformation commutative diagram"/>
</figure>
<div class="flush"></div></section>
@ -5393,9 +5393,9 @@ toMaybe (x:xs) = Just x</code></pre>
mToList Nothing = []
mToList Just x = [x]</code></pre>
<p><code>toMaybe</code> is a natural transformation. It is also a morphism from <code>[]</code> to <code>Maybe</code> in the Category of \(\Hask\) endofunctors.</p>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/nattrans-maybe-list.png" alt="natural transformation commutative diagram"/>
<img style="float:left;width:30%;margin-left:1em;" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/nattrans-maybe-list.png" alt="natural transformation commutative diagram"/>
<figure style="float:right;width:50%">
<img style="width:40%" src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/maybe-list-endofunctor-morphsm.png" alt="relation between [] and Maybe"/> <figcaption>There is <span class="red">no isomorphism</span>.<br/> Hint: <code>Bool</code> lists longer than 1. </figcaption>
<img style="width:40%" src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/maybe-list-endofunctor-morphsm.png" alt="relation between [] and Maybe"/> <figcaption>There is <span class="red">no isomorphism</span>.<br/> Hint: <code>Bool</code> lists longer than 1. </figcaption>
</figure>
<div class="flush"></div></section>
@ -5554,11 +5554,11 @@ drawPoint p = do
<div class="flush"></div></section>
<section class="slide">
<h2 id="fold"><code>fold</code></h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/tower_folded.gif" alt="fold" style="width:50%;max-width:50%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/tower_folded.gif" alt="fold" style="width:50%;max-width:50%"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="κατα-morphism">κατα-morphism</h2>
<img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/earth_catamorphed.gif" alt="catamorphism" style="width:90%;max-width:90%"/>
<img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/earth_catamorphed.gif" alt="catamorphism" style="width:90%;max-width:90%"/>
<div class="flush"></div></section>
<section class="slide">
<h2 id="κατα-morphism-fold-generalization">κατα-morphism: fold generalization</h2>

View File

@ -114,7 +114,7 @@ Haskell Vite et Direct <span class="nicer">»</span>
<a href="../../../Scratch/fr/blog/Social-link-the-right-way/"><span class="small">2013-03-14</span> <div class="inlineblockimg"><img src="../../../Scratch/img/blog/Social-link-the-right-way/main.png" alt="Être correct avec les boutons share" class="inlineimage" /></div> Être correct avec les boutons share</a>
</li>
<li>
<a href="../../../Scratch/fr/blog/Category-Theory-Presentation/"><span class="small">2012-12-12</span> <div class="inlineblockimg"><img src="http://yogsototh.github.com/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category Theory Presentation" class="inlineimage" /></div> Category Theory Presentation</a>
<a href="../../../Scratch/fr/blog/Category-Theory-Presentation/"><span class="small">2012-12-12</span> <div class="inlineblockimg"><img src="http://yogsototh.github.io/Category-Theory-Presentation/categories/img/mp/cat-hask-endofunctor.png" alt="Category Theory Presentation" class="inlineimage" /></div> Category Theory Presentation</a>
</li>
<li>
<a href="../../../Scratch/fr/blog/Haskell-OpenGL-Mandelbrot/"><span class="small">2012-06-15</span> <div class="inlineblockimg"><img src="../../../Scratch/img/blog/Haskell-OpenGL-Mandelbrot/BenoitBMandelbrot.jpg" alt="Un example progressif avec Haskell" class="inlineimage" /></div> Un example progressif avec Haskell</a>

View File

@ -131,3 +131,5 @@ a,a:visited { color: var(--fg); }
/* LEGACY */
.inlineblockimg { display: inline-block; }
.inlineblockimg > img { display: inline-block; vertical-align: middle; width: 3em; }
.definition,.example,.theorem,.conjecture { padding: 0 1rem; margin: 1rem; }

View File

@ -0,0 +1,124 @@
#+title: Eternal Language
#+description:
#+keywords: blog static
#+author: Yann Esposito
#+email: yann@esposito.host
#+date: [2021-11-15 Mon]
#+lang: en
#+options: auto-id:t
#+startup: showeverything
The oldest code I ever wrote was probably in logo, then in Basic.
Then I learned Turbo Pascal, then C, but also awk, csh, bash, etc…
And for most of these programs, I am pretty confident, that taking the
source code and using it today will still work as I would expect.
Then during my PhD, I wrote a quite extensive C++ program.
And, this was probably one of the first time I used extensively a library.
But, a few years later, I couldn't make my code compile.
I updated my code to make it work again.
But today, I wouldn't be surprised to learn it doesn't work anymore.
Why? The compiler will not accept some of my code, the library might have a
few issues.
Whatever, it is difficult.
I think, most of my application code suffer from the same issue.
The ecosystem of the language evolve, but if I don't take care of my code,
it rots.
But really fast.
Wouldn't it be nice to be able to know that a code you write today will
still be usable in 10, 30 or 100 years?
Could this be possible looking at how our industry is going in the opposite
direction?
Have you remarked how difficult it is to have something now.
I mean, really have an object that you know, could be passed to your
children that they themselves pass to theirs for many generations.
In particular in the Software programming industry, or community at large.
This remark is not only valid for the industry but for the science as well.
See how it was difficult to reproduce AI experiments.
See how difficult it is for a searcher to provide the same stable testing
environment he has locally.
Worse than that.
The code they provide will almost not be compatible with the future
environment.
And imagine someone has a great new idea to update an old idea.
It will not be able to use a recent library on the old code.
So having a nice reproducible environment is not enough.
Where are the Joconde of the XXIth century?
Where are the thinker in the Software world?
We should strive to find, if possible a single, "Eternal Language".
#+begin_definition
*Definition:* An /eternal programming language/ is a language both backward and
forward compatible.
#+end_definition
Backward compatible: using code from v1 will work with v2.
Forward compatible: using code from v2 will work with v1.
- *TeX*, once written, it was never updated. It contained everything it
needed. The project was over, and there is an active philosophy of
software at hand about having a finished program. It does one thing as
perfectly as possible. Any new feature should be build around TeX, but
TeX in itself must not be changed. This is an Eternal language reached by
this culture of providing a finished product.
Note how different this is today. The first reaction of many people to
check if they should use a tool or a software is to look at the activity
of the repository. And if there is no activity, they see that as a sign
of dead project. Depending on the project this is better to check that
there is no activity at all.
- *C*, here Eternal Language is reached via a specification
Almost Eternal Languages:
- *Clojure*, this is almost the same kind of philosophy at hand. But it is
not yet an Eternal language. Clojure introduced a few new feature that
will not work in the past. But, this is close to be an eternal language.
- *go*, I dislike this language as to me this is like a new *C* without much
more to it. We can do so much better regarding new languages this sadden
me people chose it. But the *go* community takes API retro compatibility
very seriously, and thus, it sounds like it is close to reaching the
status of Eternal Language.
The opposite of Eternal Language
- *Haskell*, every new GHC upgrade break something. Every new lib update
break something. People tried to mitigate this via tools. But the real
issue is due to how the community works. I am myself guilty of breaking
library API.
Clearly, as much as I love Haskell, the best you can achieve is a freeze
in time environment. But this is often a major problem. Because if you
want to build an application that will adapt to new concerns, eventually
you will want to use a recent library. And by doing so, you will need to
upgrade your environment that will forces you to upgrade the libraries,
the compiler, and will forces you to change many parts in your code that
you would probably have preferred to forget as a stable asset.
And quite recently the Haskell community was heated by that.
- *Purescript*, as the updates occurs with slower pace, this is more
sustainable, but this is still a major concern.
Both Eternal and opposite of Eternal Language;
- *Javascript*, while javascript in itself is close to be an eternal language.
node.js / npm, etc… The community makes it completely the opposite.
** How to reach Eternal Language?
:PROPERTIES:
:CUSTOM_ID: how-to-reach-eternal-language-
:END:
I am not a specialist of these questions, so my advice will probably be
naive to the extreme. But here is how I imagine a list of mandatory properties:
1. Have a minimal core for your language.
2. Finish the compiler (only fix bugs)
3. Have a language with huge adaptability principles built into it. Like
LISP with macros for example. Macros are a way to trick LISP to use
another language within the core language.