<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Conal Elliott &#187; icfp</title>
	<atom:link href="http://conal.net/blog/tag/icfp/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Thu, 25 Jul 2019 18:15:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.17</generator>
	<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=conal&amp;popout=1&amp;url=http%3A%2F%2Fconal.net%2Fblog%2F&amp;language=en_US&amp;category=text&amp;title=Conal+Elliott&amp;description=Inspirations+%26amp%3B+experiments%2C+mainly+about+denotative%2Ffunctional+programming+in+Haskell&amp;tags=blog" type="text/html" />
	<item>
		<title>Simply efficient functional reactivity</title>
		<link>http://conal.net/blog/posts/simply-efficient-functional-reactivity</link>
		<comments>http://conal.net/blog/posts/simply-efficient-functional-reactivity#comments</comments>
		<pubDate>Fri, 04 Apr 2008 22:27:43 +0000</pubDate>
		<dc:creator><![CDATA[Conal]]></dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[applicative functor]]></category>
		<category><![CDATA[continuous]]></category>
		<category><![CDATA[discrete]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[FRP]]></category>
		<category><![CDATA[functional reactive programming]]></category>
		<category><![CDATA[functor]]></category>
		<category><![CDATA[future value]]></category>
		<category><![CDATA[icfp]]></category>
		<category><![CDATA[implementation]]></category>
		<category><![CDATA[joinMaybes]]></category>
		<category><![CDATA[monad]]></category>
		<category><![CDATA[monoid]]></category>
		<category><![CDATA[multi-threading]]></category>
		<category><![CDATA[normal form]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[reactive behavior]]></category>
		<category><![CDATA[reactive value]]></category>
		<category><![CDATA[semantics]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[type class]]></category>
		<category><![CDATA[type class morphism]]></category>
		<category><![CDATA[type composition]]></category>

		<guid isPermaLink="false">http://conal.net/blog/posts/simply-efficient-functional-reactivity/</guid>
		<description><![CDATA[I submitted a paper Simply efficient functional reactivity to ICFP 2008. Abstract: Functional reactive programming (FRP) has simple and powerful semantics, but has resisted efficient implementation. In particular, most past implementations have used demand-driven sampling, which accommodates FRP&#8217;s continuous time semantics and fits well with the nature of functional programming. Consequently, values are wastefully recomputed [&#8230;]]]></description>
				<content:encoded><![CDATA[<!-- 

Title: Simply efficient functional reactivity

Tags: applicative functor, continuous, discrete, event, FRP, functional reactive programming, functor, future value, icfp, implementation, joinMaybes, monad, monoid, type class morphism, multi-threading, normal form, paper, reactive behavior, reactive value, semantics, time, type class, type composition

URL: http://conal.net/blog/posts/simply-efficient-functional-reactivity/

-->

<!-- references -->

<!-- teaser -->

<p>I submitted a paper <em><a href="http://conal.net/papers/simply-reactive" title="Paper: &quot;Simply efficient functional reactivity&quot;">Simply efficient functional reactivity</a></em> to <a href="http://www.icfpconference.org/icfp2008" title="ICFP 2008 conference page">ICFP 2008</a>.</p>

<p><strong>Abstract:</strong></p>

<blockquote>
  <p>Functional reactive programming (FRP) has simple and powerful semantics, but has resisted efficient implementation.  In particular, most past implementations have used demand-driven sampling, which accommodates FRP&#8217;s continuous time semantics and fits well with the nature of functional programming.  Consequently, values are wastefully recomputed even when inputs don&#8217;t change, and reaction latency can be as high as the sampling period.</p>
  
  <p>This paper presents a way to implement FRP that combines data- and demand-driven evaluation, in which values are recomputed only when necessary, and reactions are nearly instantaneous.  The implementation is rooted in a new simple formulation of FRP and its semantics and so is easy to understand and reason about.</p>
  
  <p>On the road to efficiency and simplicity, we&#8217;ll meet some old friends (monoids, functors, applicative functors, monads, morphisms, and improving values) and make some new friends (functional future values, reactive normal form, and concurrent &#8220;unambiguous choice&#8221;).</p>
</blockquote>

<!--
**Edits**:

* 2008-02-09: just fiddling around
-->

<!-- without a comment or something here, the last item above becomes a paragraph -->
<p><a href="http://conal.net/blog/?flattrss_redirect&amp;id=22&amp;md5=dee648d38383131c59963d5b9b4c4b93"><img src="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://conal.net/blog/posts/simply-efficient-functional-reactivity/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=conal&amp;popout=1&amp;url=http%3A%2F%2Fconal.net%2Fblog%2Fposts%2Fsimply-efficient-functional-reactivity&amp;language=en_GB&amp;category=text&amp;title=Simply+efficient+functional+reactivity&amp;description=I+submitted+a+paper+Simply+efficient+functional+reactivity+to+ICFP+2008.+Abstract%3A+Functional+reactive+programming+%28FRP%29+has+simple+and+powerful+semantics%2C+but+has+resisted+efficient+implementation.+In+particular%2C+most+past...&amp;tags=applicative+functor%2Ccontinuous%2Cdiscrete%2Cevents%2CFRP%2Cfunctional+reactive+programming%2Cfunctor%2Cfuture+value%2Cicfp%2Cimplementation%2CjoinMaybes%2Cmonad%2Cmonoid%2Cmulti-threading%2Cnormal+form%2Cpaper%2Creactive+behavior%2Creactive+value%2Csemantics%2Ctime%2Ctype+class%2Ctype+class+morphism%2Ctype+composition%2Cblog" type="text/html" />
	</item>
		<item>
		<title>&#8220;Tangible Functional Programming&#8221; &#8212; icfp version</title>
		<link>http://conal.net/blog/posts/tangible-functional-programming-icfp-version</link>
		<comments>http://conal.net/blog/posts/tangible-functional-programming-icfp-version#comments</comments>
		<pubDate>Tue, 10 Jul 2007 05:19:00 +0000</pubDate>
		<dc:creator><![CDATA[Conal]]></dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[arrow]]></category>
		<category><![CDATA[DeepArrow]]></category>
		<category><![CDATA[Eros]]></category>
		<category><![CDATA[gestural composition]]></category>
		<category><![CDATA[icfp]]></category>
		<category><![CDATA[interactive programming]]></category>
		<category><![CDATA[interactive visualization]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[Phooey]]></category>
		<category><![CDATA[TV]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://conal.net/blog/posts/tangible-functional-programming-icfp-version/</guid>
		<description><![CDATA[I just submitted the camera-ready version of &#8220;Tangible Functional Programming&#8221;, for ICFP &#8217;07. I&#8217;m happy with this version. It&#8217;s improved drastically since my first submission to ICFP &#8217;06, thanks to many helpful comments. I&#8217;ve also been recreating the implementation on top of DeepArrow, Phooey, and TV, in preparation for a software release. It&#8217;s getting simpler, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just submitted the camera-ready version of <a href="http://conal.net/papers/Eros">&#8220;Tangible Functional Programming&#8221;</a>, for <a href="http://www.informatik.uni-bonn.de/%7Eralf/icfp07.html">ICFP &#8217;07</a>.  I&#8217;m happy with this version. It&#8217;s improved drastically since my first submission to ICFP &#8217;06, thanks to many helpful comments. I&#8217;ve also been recreating the implementation on top of <a href="http://www.haskell.org/haskellwiki/DeepArrow">DeepArrow</a>, <a href="http://www.haskell.org/haskellwiki/Phooey">Phooey</a>, and <a href="http://www.haskell.org/haskellwiki/TV">TV</a>, in preparation for a software release. It&#8217;s getting simpler, but it&#8217;s not as simple as I want.</p>
<p><a href="http://conal.net/blog/?flattrss_redirect&amp;id=37&amp;md5=9870e5dd6003b96b97a04f322c179426"><img src="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://conal.net/blog/posts/tangible-functional-programming-icfp-version/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=conal&amp;popout=1&amp;url=http%3A%2F%2Fconal.net%2Fblog%2Fposts%2Ftangible-functional-programming-icfp-version&amp;language=en_GB&amp;category=text&amp;title=%26%238220%3BTangible+Functional+Programming%26%238221%3B+%26%238212%3B+icfp+version&amp;description=I+just+submitted+the+camera-ready+version+of+%26%238220%3BTangible+Functional+Programming%26%238221%3B%2C+for+ICFP+%26%238217%3B07.+I%26%238217%3Bm+happy+with+this+version.+It%26%238217%3Bs+improved+drastically+since+my+first+submission+to+ICFP+%26%238217%3B06%2C+thanks+to...&amp;tags=arrow%2CDeepArrow%2CEros%2Cgestural+composition%2Cicfp%2Cinteractive+programming%2Cinteractive+visualization%2Clibrary%2CPhooey%2CTV%2Cwriting%2Cblog" type="text/html" />
	</item>
		<item>
		<title>ICFP &#8217;07 paper draft &#8212; comments please</title>
		<link>http://conal.net/blog/posts/icfp-07-paper-draft-comments-please</link>
		<comments>http://conal.net/blog/posts/icfp-07-paper-draft-comments-please#comments</comments>
		<pubDate>Tue, 27 Mar 2007 19:14:00 +0000</pubDate>
		<dc:creator><![CDATA[Conal]]></dc:creator>
				<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[combinators]]></category>
		<category><![CDATA[DeepArrow]]></category>
		<category><![CDATA[end-user programming]]></category>
		<category><![CDATA[Eros]]></category>
		<category><![CDATA[icfp]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://conal.net/blog/posts/icfp-07-paper-draft-comments-please/</guid>
		<description><![CDATA[Warning: if you&#8217;re on the ICFP program committee and want to preserve double-blind reviewing, please ignore this post. I&#8217;ve been working on an ICFP paper called “Tangible Functional Programming”, revising my last year&#8217;s submission on Eros. If you&#8217;re interested in taking a look, I&#8217;d greatly appreciate any comments, especially before the April 6 submission deadline. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Warning: if you&#8217;re on the ICFP program committee and want to preserve double-blind reviewing, please ignore this post.</p>

<p>I&#8217;ve been working on an ICFP paper called “<a href="http://conal.net/papers/Eros">Tangible Functional Programming</a>”, revising my last year&#8217;s submission on Eros.  If you&#8217;re interested in taking a look, I&#8217;d greatly appreciate any comments, especially before the April 6 submission deadline.</p>

<p><span style="font-weight: bold;">Abstract</span></p>

<blockquote>  <p>We present a user-friendly approach to unifying program creation and  execution, based on a notion of “tangible values” (TVs), which are visible and interactive GUI manifestations of pure values. Programming happens by gestural  composition of TVs. Our goal is to give end-users the ability to  create parameterized, composable content without imposing the usual abstract and  linguistic working style of programmers. We hope that such a system will put the  essence of programming into the hands of many more people, and in particular  people with artistic/visual creative style.</p>  <p>In realizing this vision, we develop algebras for visual presentation and for  “deep” function application, where function and argument may both be nested  within a structure of tuples, functions, etc. Composition gestures are  translated into chains of combinators that act simultaneously  on statically typed values and their visualizations.</p> </blockquote>

<p>
</p>

<p style="text-align: left;">Here is a figure from the paper, showing one stage of an interactively composed interactive 2D region. The user selects compatibly-typed input and output widgets, typically in different TVs. The result is a new TV that merges the source TVs, <i>except</i> for the connected input and output, which vanish.  The sliders control the disk and checker sizes and the checker&#8217;s rotation angle.</p>

<p align="center"><img src="http://conal.net/papers/Eros/png/make-diskChecker.png" border="0" /></p>

<p><b>Edit</b> on March 28:I just added two relevant pointers to the <href=http: net="" papers="" eros="">paper&#8217;s web page:</href=http:>
</p>

<ul><li>The <a href="http://haskell.org/haskellwiki/TV">TV</a> library page</li><li>The <a href="http://haskell.org/haskellwiki/DeepArrow">DeepArrow</a> library page</li></ul>
<p><a href="http://conal.net/blog/?flattrss_redirect&amp;id=32&amp;md5=b60d4e3afa1c33dfba8abb6520038173"><img src="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png" srcset="http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@2x.png 2xhttp://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white.png, http://conal.net/blog/wp-content/plugins/flattr/img/flattr-badge-white@3x.png 3x" alt="Flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://conal.net/blog/posts/icfp-07-paper-draft-comments-please/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=conal&amp;popout=1&amp;url=http%3A%2F%2Fconal.net%2Fblog%2Fposts%2Ficfp-07-paper-draft-comments-please&amp;language=en_GB&amp;category=text&amp;title=ICFP+%26%238217%3B07+paper+draft+%26%238212%3B+comments+please&amp;description=Warning%3A+if+you%26%238217%3Bre+on+the+ICFP+program+committee+and+want+to+preserve+double-blind+reviewing%2C+please+ignore+this+post.+I%26%238217%3Bve+been+working+on+an+ICFP+paper+called+%E2%80%9CTangible+Functional+Programming%E2%80%9D%2C+revising...&amp;tags=combinators%2CDeepArrow%2Cend-user+programming%2CEros%2Cicfp%2CTV%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
