Skip to content

Commit

Permalink
version given at twitter
Browse files Browse the repository at this point in the history
  • Loading branch information
duckpilot committed Sep 24, 2010
1 parent c63edb4 commit debba3b
Showing 1 changed file with 12 additions and 23 deletions.
35 changes: 12 additions & 23 deletions examples/froc-dom/talk/index.html
Expand Up @@ -13,38 +13,20 @@ <h1 id="title_title">Better AJAX UIs<br/>with<br/>Functional Reactive Programmin
<p id="title_email">jake@donham.org</p>
</div>

<div id="better" class="slide" style="display:none">
<h2>Better?</h2>

<p>Not (necessarily)</p>
<ul>
<li>faster</li>
<li>prettier</li>
</ul>

<p>But</p>
<ul>
<li>less code</li>
<li>easier to reason about</li>
<li>fewer bugs</li>
<li>(more time to make it faster / prettier)</li>
</ul>
</div>

<div id="gui_hard" class="slide" style="display:none">
<h2>GUIs are hard!</h2>

<p>Typical GUI impl consists of</p>
<ul>
<li>state</li>
<li>events</li>
<li>callbacks (a.k.a. observers)</li>
<li>callbacks</li>
</ul>

<p>Problems:</p>
<ul>
<li>state + concurrency = pain</li>
<li>unmodular: callback soup, control inversion</li>
<li>callback soup, control inversion</li>
</ul>

<p>Adobe: 1/3 code and 1/2 bugs due to event handling</p>
Expand All @@ -64,7 +46,7 @@ <h2>GUIs should not be hard!</h2>
</div>

<div id="ocaml_etc" class="slide" style="display:none">
<h2>OCaml</h2>
<h2>OCaml et al.</h2>
<ul>
<li>OCaml: a nice programming language
<table id="ocaml_etc_syntax" style="border-collapse: collapse">
Expand Down Expand Up @@ -98,7 +80,7 @@ <h2>OCaml</h2>
</tr>
<tr>
<td></td>
<td class="border_left"><code><span class="tuareg-font-lock-governing">val</span> <span class="variable-name">foo </span><span class="tuareg-font-lock-operator">:</span> <span class="type">int </span><span class="tuareg-font-lock-operator">-&gt;</span><span class="type"> string</span></code></td>
<td class="border_left"><code><span class="tuareg-font-lock-governing">val</span> <span class="variable-name">foo </span><span class="tuareg-font-lock-operator">:</span> <span class="type">int </span><span class="tuareg-font-lock-operator">-&gt;</span><span class="type"> <span class="type">int </span><span class="tuareg-font-lock-operator">-&gt;</span><span class="type"> string</span></code></td>
</tr>
<tr>
<td></td>
Expand Down Expand Up @@ -427,7 +409,6 @@ <h2>Example: Bounce source</h2>
<span class="type">F</span>.merge <span class="tuareg-font-lock-operator">[</span> xy_out_of_bounds<span class="tuareg-font-lock-operator">;</span> x_out_of_bounds<span class="tuareg-font-lock-operator">;</span> y_out_of_bounds<span class="tuareg-font-lock-operator">;</span> hit_paddle <span class="tuareg-font-lock-operator">]</span> <span class="tuareg-font-lock-operator">|&gt;</span>
<span class="type">F</span>.map <span class="tuareg-font-lock-governing">begin</span> <span class="keyword">fun</span> <span class="variable-name">e </span><span class="tuareg-font-lock-operator">-&gt;</span>
<span class="tuareg-font-lock-governing">let</span><span class="variable-name"> </span><span class="tuareg-font-lock-operator">(</span><span class="variable-name">vx</span><span class="tuareg-font-lock-operator">,</span><span class="variable-name"> vy</span><span class="tuareg-font-lock-operator">)</span><span class="variable-name"> </span><span class="tuareg-font-lock-operator">=</span> <span class="type">F</span>.sample v <span class="tuareg-font-lock-governing">in</span>
<span class="tuareg-font-lock-governing">let</span><span class="variable-name"> </span><span class="tuareg-font-lock-operator">(</span><span class="variable-name">x</span><span class="tuareg-font-lock-operator">,</span><span class="variable-name"> y</span><span class="tuareg-font-lock-operator">)</span><span class="variable-name"> </span><span class="tuareg-font-lock-operator">=</span> <span class="type">F</span>.sample bp <span class="tuareg-font-lock-governing">in</span>
<span class="keyword">match</span> e <span class="keyword">with</span>
<span class="tuareg-font-lock-operator">|</span> `X_bounds <span class="tuareg-font-lock-operator">-&gt;</span> <span class="tuareg-font-lock-operator">(-.</span>vx<span class="tuareg-font-lock-operator">,</span> vy<span class="tuareg-font-lock-operator">)</span>
<span class="tuareg-font-lock-operator">|</span> `Y_bounds <span class="tuareg-font-lock-operator">-&gt;</span> <span class="tuareg-font-lock-operator">(</span>vx<span class="tuareg-font-lock-operator">,</span> <span class="tuareg-font-lock-operator">-.</span>vy<span class="tuareg-font-lock-operator">)</span>
Expand Down Expand Up @@ -455,6 +436,14 @@ <h2>Why OCaml for FRP?</h2>
<li>static typing, types inferred</li>
<li>imperative implementation possible</li>
</ul>

<p>Compare to:</p>
<ul>
<li>Flapjax (Javascript)</li>
<li>Fran et al. (Haskell)</li>
<li>FrTime (Scheme)</li>
<li>Scala.React</li>
</ul>
</div>

<div id="thanks" class="slide" style="display:none">
Expand Down

0 comments on commit debba3b

Please sign in to comment.