<blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">To keep with the example,<br>
something like drawUnitRectangle &lt;$&gt; mousePosition would result in a<br>
signal whose points are IO actions that draw the rectangle where the<br>
mouse is at the moment you sample them.</blockquote><div><br>And just as IO is unnecessary for behavior (functions of time), it&#39;s also unnecessary for imagery (functions of space).  Continuing with the functional (non-IO) theme, you can give a semantically precise, composable and simple type of images.<br>
<br>  - Conal<br></div><br><div class="gmail_quote">2009/4/10 Patai Gergely <span dir="ltr">&lt;<a href="mailto:patai_gergely@fastmail.fm">patai_gergely@fastmail.fm</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">&gt; I&#39;ve seen alot of FRP libraries come up, and I&#39;m always left with the<br>
&gt; question, &quot;Where the heck are the FRP tutorials?&quot;<br>
</div>Writing a good tutorial takes a lot of time, but I made some example<br>
code precisely to show how the library can be used. The best way to<br>
learn is to start playing with them. The &quot;chase&quot; example is about as<br>
small as it gets, and the breakout one is generally a nice test case for<br>
such a library, as it exercises the code as well as provides a<br>
reasonably complex example for the user to study.<br>
<br>
The basic idea is indeed what Achim said: we refer to the whole lifetime<br>
of some time-varying quantity (what I call a signal, but the name<br>
behaviour is also often used for this concept in other systems) with a<br>
single name. For instance, mousePosition is a two-dimensional vector<br>
whose value follows the position of the mouse at any time. The<br>
applicative interface means that you can combine signals using ordinary<br>
point-wise functions by simple lifting. To keep with the example,<br>
something like drawUnitRectangle &lt;$&gt; mousePosition would result in a<br>
signal whose points are IO actions that draw the rectangle where the<br>
mouse is at the moment you sample them. The drawUnitRectangle function<br>
doesn&#39;t need to have anything reactive in it, it just takes an ordinary<br>
pair (or whatever you represent your vectors with) and does its job.<br>
<br>
In the end, a program working with signals looks very much like one<br>
calculating a snapshot of the system and the state changes at the given<br>
moment, except you need to insert &lt;*&gt;&#39;s and lift values where<br>
applicable.<br>
<br>
Gergely<br>
<font color="#888888"><br>
--<br>
<a href="http://www.fastmail.fm" target="_blank">http://www.fastmail.fm</a> - mmm... Fastmail...<br>
</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>