<div class="gmail_quote">On Mon, Feb 2, 2009 at 11:39 AM, Creighton Hogg <span dir="ltr">&lt;<a href="mailto:wchogg@gmail.com">wchogg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2009/1/29 Conal Elliott &lt;<a href="mailto:conal@conal.net">conal@conal.net</a>&gt;:<br>
<div class="Ih2E3d">&gt; Hi Achim,<br>
&gt;<br>
&gt; I came to the same conclusion: I want to sweep aside these OO, imperative<br>
&gt; toolkits, and replace them with something &quot;genuinely functional&quot;, which for<br>
&gt; me means having a precise &amp; simple compositional (denotational) semantics.<br>
&gt; Something meaningful, formally tractable, and powefully compositional from<br>
&gt; the ground up. &nbsp;As long as we build on complex legacy libraries (Gtk,<br>
&gt; wxWidgets, Qt, OpenGL/GLUT, ...), we&#39;ll be struggling against (or worse yet,<br>
&gt; drawn into) their ad hoc mental models and system designs.<br>
&gt;<br>
&gt; As Meister Eckhart said, &quot;Only the hand that erases can write the true<br>
&gt; thing.&quot;<br>
<br>
</div>I think working on a purely functional widget toolkit would actually<br>
be a really cool project. &nbsp;Do you have any ideas, though, on what<br>
should be the underlying primitives?<br>
</blockquote><div><br>Again, my goal would not be a &quot;purely functional&quot; library, because even IO is &quot;purely functional&quot;.&nbsp; My goal is a &quot;denotational&quot; library, i.e., one that has an elegant (denotational) semantics, and hence is powerfully compositional and good for reasoning.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The initial gut feeling I have is that one should just ignore any<br>
notion of actually displaying widgets &amp; instead focus on a clean<br>
algebra of how to &#39;add&#39; &nbsp;widgets that relates the concepts of<br>
inheritance &amp; relative position. &nbsp;What I mean by inheritance, here, is<br>
how to direct a flow of &#39;events&#39;. &nbsp;I don&#39;t necessarily mean events in<br>
the Reactive sense, because I think it&#39;d be important to make the<br>
model completely independent of how time &amp; actual UI actions are<br>
handled.<br>
<br>
Any thoughts to throw in, here?<br>
<br>
Cheers,<br>
<font color="#888888">C<br>
</font></blockquote></div><br><br>
The Fruit paper, &quot;<a href="http://www.apocalypse.org/pub/u/antony/work/pubs/genuinely-functional-guis.pdf">Genuinely
   Functional User Interfaces</a>&quot;,
gives a semantic model, which could be a starting place for thinking about possibilities.&nbsp; At the very least, I&#39;d
like to take it to 3D.&nbsp; The idea there is that a UI is a function from
flows (behaviors/signals) to flows, where the input includes mouse
&amp; keyboard stuff and the output includes an image.&nbsp; An image is, as
in Pan, a function from R^2 -&gt; Color, where color includes partial
opacity.&nbsp; When UIs are transformed in time and/or space, they
correspondingly see inversely-transformed input, thanks to a general
principle of transforming functions.<br>
<br>&nbsp;&nbsp; - Conal<br>

<br>