Thanks Greg, appreciated - I understand that neither FrTime &amp; Flapjax is pure functional, but it allows me to think differently on how program can be structured, and it&#39;s great to see a different way. <br><br>Thanks,
<br>yinso <br><br><div><span class="gmail_quote">On 5/16/07, <b class="gmail_sendername">Gregory Cooper</b> &lt;<a href="mailto:greg@cs.brown.edu">greg@cs.brown.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
For what it&#39;s worth, both FrTime and Flapjax interact fairly smoothly<br>with their host languages&#39; object systems.&nbsp;&nbsp;Our paper from FLOPS &#39;06<br>tells the story with FrTime:<br><br><a href="http://www.cs.brown.edu/people/sk/Publications/Papers/Published/ick-adapt-oo-fwk-frp/">
http://www.cs.brown.edu/people/sk/Publications/Papers/Published/ick-adapt-oo-fwk-frp/</a><br><br>The paper describes a strategy for wrapping sets of classes (in this<br>case a GUI toolkit) so they can work with signals.&nbsp;&nbsp;The code is
<br>available in the demos/gui subdirectory of the FrTime collection.&nbsp;&nbsp;A<br>similar wrapper (for the HTML document object model) is built directly<br>into Flapjax.<br><br>Flapjax&#39;s functional reactive values are actually Javascript objects,
<br>and many dataflow operations exist as prototype methods.&nbsp;&nbsp;For example,<br>to make a stream of AJAX requests based on the content of a text box,<br>we can write code like this:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;var linksInfoE = buildRequest(extractValue_e(&#39;userName&#39;).
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filter_e(nameFilter).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calm_e(500)).evalForeignScriptVal_e();<br><br>This extracts the sequence of values (over time) from the &#39;userName&#39;
<br>text box, filters out invalid names, and waits until the user stops<br>typing briefly before making the request.&nbsp;&nbsp;The result of the<br>expression is the sequence of responses from the server.&nbsp;&nbsp;One nice<br>thing is that method invocations (thanks to the implicit &#39;this&#39;
<br>parameter) allow us to &quot;pipe together&quot; a sequence of transformations,<br>much like Unix shell scripting.<br><br>Greg<br><br>On 5/16/07, Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu
</a>&gt; wrote:<br>&gt;<br>&gt; You may also want to look at the draw.* package that comes with<br>&gt; ProfessorJ and the (upcoming second volume of How to Design) Classes.<br>&gt; It is an applicative approach to some GUI programming using classes
<br>&gt; and objects. Because of the implicit &#39;this&#39; parameter, I consider it<br>&gt; superior to FRP.<br>&gt;<br>&gt; For now just look for teachpacks in Help Desk and follow the HtDC link.<br>&gt;<br>&gt; -- Matthias
<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; On May 16, 2007, at 3:46 AM, YC wrote:<br>&gt;<br>&gt; &gt;<br>&gt; &gt; On 5/15/07, Grant Rettke &lt;<a href="mailto:grettke@acm.org">grettke@acm.org</a>&gt; wrote: &gt; GUIs are a
<br>&gt; &gt; perfect example to think about using a functional solution.<br>&gt; &gt; &gt; So, think about it...it would be terrible!!!<br>&gt; &gt;<br>&gt; &gt; I think the same, but I just found that there is a style of FP
<br>&gt; &gt; called Functional Reactive Programming that purportedly models GUI<br>&gt; &gt; more declaratively than OOP&#39;s handlers &amp; events.&nbsp;&nbsp;Flapjax and<br>&gt; &gt; FrTime are working implementations of FRP.<br>
&gt; &gt;<br>&gt; &gt; <a href="http://citeseer.ist.psu.edu/cooper04frtime.html">http://citeseer.ist.psu.edu/cooper04frtime.html</a><br>&gt; &gt;<br>&gt; &gt; <a href="http://www.flapjax-lang.org/">http://www.flapjax-lang.org/
</a><br>&gt; &gt;<br>&gt; &gt; <a href="http://www.haskell.org/frp/">http://www.haskell.org/frp/</a><br>&gt; &gt;<br>&gt; &gt; It seems that I found more links w.r.t to functional style in<br>&gt; &gt; Haskell on the net maybe due to Haskell being pure functional...
<br>&gt; &gt;<br>&gt; &gt; Thanks,<br>&gt; &gt; yinso<br>&gt; &gt;<br>&gt; &gt; _________________________________________________<br>&gt; &gt;&nbsp;&nbsp; For list-related administrative tasks:<br>&gt; &gt;&nbsp;&nbsp; <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">
http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>&gt;<br>&gt; _________________________________________________<br>&gt;&nbsp;&nbsp; For list-related administrative tasks:<br>&gt;&nbsp;&nbsp; <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">
http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>&gt;<br></blockquote></div><br>