<?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>weaselhat &#187; Papers</title>
	<atom:link href="http://www.weaselhat.com/category/papers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.weaselhat.com</link>
	<description></description>
	<lastBuildDate>Sat, 29 May 2010 09:17:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Contracts Made Manifest: final version</title>
		<link>http://www.weaselhat.com/2009/11/03/contracts-made-manifest-final-version/</link>
		<comments>http://www.weaselhat.com/2009/11/03/contracts-made-manifest-final-version/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:03:30 +0000</pubDate>
		<dc:creator>Michael Greenberg</dc:creator>
				<category><![CDATA[Papers]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">http://www.weaselhat.com/?p=167</guid>
		<description><![CDATA[We&#8217;ve sent off the final version of Contracts Made Manifest. There have been quite a few improvements since submission, the most important of which is captured by Figure 1 from our paper: Our submission only addressed lax &#955;C, where we had an inexact translation &#966; into &#955;H and an exact translation &#968; out of &#955;H. [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve sent off the final version of <i><a href="http://www.cis.upenn.edu/~mgree/papers/popl2010_contracts.pdf" title="I think the link works, this time!">Contracts Made Manifest</a></i>.  There have been quite a few improvements since submission, the most important of which is captured by Figure 1 from our paper:</p>
<p><center><img src="http://www.weaselhat.com/wp-content/uploads/2009/11/axis.png" alt="The axis of blame" title="The axis of blame" width="369" height="134" class="size-full wp-image-168" /></center></p>
<p>Our submission only addressed lax &lambda;<sub>C</sub>, where we had an inexact translation &phi; into &lambda;<sub>H</sub> and an exact translation &psi; out of &lambda;<sub>H</sub>.  We show a dual situation for picky &lambda;<sub>C</sub>, where &phi; is exact and &psi; is inexact.  Intuitively, languages farther to the right on the &#8220;axis of blame&#8221; are pickier.  Translating from right to left preserves behavior exactly, but left-to-right translations generate terms that can blame more than their pre-images.  (There are examples in the paper.)  I should note that lax and picky &lambda;<sub>C</sub> seem to be the extremes of the axis of blame: I don&#8217;t see a natural way to be laxer than lax &lambda;<sub>C</sub> or pickier than picky &lambda;<sub>C</sub>.</p>
<p>We also show that restricting these calculi to first-order dependency leaves them exactly equivalent; before, we could only show an exact equivalence by eliminating all dependency.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weaselhat.com/2009/11/03/contracts-made-manifest-final-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flapjax: A Programming Language for Ajax Applications</title>
		<link>http://www.weaselhat.com/2009/08/13/flapjax-2/</link>
		<comments>http://www.weaselhat.com/2009/08/13/flapjax-2/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:00:29 +0000</pubDate>
		<dc:creator>Michael Greenberg</dc:creator>
				<category><![CDATA[Flapjax]]></category>
		<category><![CDATA[Papers]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">http://www.weaselhat.com/?p=122</guid>
		<description><![CDATA[I am immensely pleased to report that our paper on Flapjax was accepted to OOPSLA 2009. This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction [...]]]></description>
			<content:encoded><![CDATA[<p>I am immensely pleased to report that <a href="http://www.cis.upenn.edu/~mgree/papers/oopsla2009_flapjax.pdf">our paper on Flapjax</a> was accepted to <a href="http://www.oopsla.org/oopsla2009/" title="My favorite conference name to say, perhaps my least favorite to type.  OOPSPLA, every time.">OOPSLA 2009</a>.</p>
<blockquote><p>
This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those data?ows. This allows developers to write reactive interfaces in a declarative and compositional style.</p>
<p>Flapjax is built on top of JavaScript. It runs on unmodi?ed browsers and readily interoperates with existing JavaScript code. It is usable as either a programming language (that is compiled to JavaScript) or as a JavaScript library, and is designed for both uses. This paper presents the language, its design decisions, and illustrative examples drawn from several working Flapjax applications.
</p></blockquote>
<p>The real heroes of this story are my co-authors.  Leo, Arjun, and Greg were there for the initial, heroic-effort-based implementation.  Jacob and Aleks wrote incredible applications with our dog food.  Shriram, of course, saw the whole thing through.  Very few of my contributions remain: the original compiler is gone (thank goodness); my <a href="http://www.cis.upenn.edu/~mgree/papers/ugrad_thesis.pdf">thesis work</a> is discussed briefly in <i>How many DOMs?</i> on page 15.  Here&#8217;s to a great team and a great experience (and a great language)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weaselhat.com/2009/08/13/flapjax-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Contracts Made Manifest</title>
		<link>http://www.weaselhat.com/2009/07/30/contracts-made-manifest/</link>
		<comments>http://www.weaselhat.com/2009/07/30/contracts-made-manifest/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 20:31:49 +0000</pubDate>
		<dc:creator>Michael Greenberg</dc:creator>
				<category><![CDATA[Programming Languages]]></category>
		<category><![CDATA[Submissions]]></category>

		<guid isPermaLink="false">http://www.weaselhat.com/?p=117</guid>
		<description><![CDATA[Benjamin Pierce, Stephanie Weirich, and I submitted a paper to POPL 2010; it&#8217;s about contracts. Here&#8217;s the abstract: Since Findler and Felleisen introduced higher-order contracts, many variants of their system have been proposed. Broadly, these fall into two groups: some follow Findler and Felleisen in using latent contracts, purely dynamic checks that are transparent to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="www.cis.upenn.edu/~bcpierce/">Benjamin Pierce</a>, <a href="www.cis.upenn.edu/~sweirich/">Stephanie Weirich</a>, and I <a href="http://www.cis.upenn.edu/~mgree/papers/popl2010_contracts.pdf">submitted a paper</a> to <a href="http://www.cse.psu.edu/popl/10/">POPL 2010</a>; it&#8217;s about contracts.  Here&#8217;s the abstract:</p>
<blockquote><p>
Since Findler and Felleisen introduced higher-order contracts, many variants of their system have been proposed. Broadly, these fall into two groups: some follow Findler and Felleisen in using latent contracts, purely dynamic checks that are transparent to the type system; others use manifest contracts, where refinement types record the most recent check that has been applied. These two approaches are generally assumed to be equivalent&#8212;different ways of implementing the same idea, one retaining a simple type system, and the other providing more static information. Our goal is to formalize and clarify this folklore understanding.</p>
<p>Our work extends that of Gronski and Flanagan, who defined a latent calculus \lambda_C and a manifest calculus \lambda_H, gave a translation \phi from \lambda_C to \lambda_H, and proved that if a \lambda_C term reduces to a constant, then so does its \phi-image. We enrich their account with a translation \psi in the opposite direction and prove an analogous theorem for \psi.</p>
<p>More importantly, we generalize the whole framework to dependent contracts, where the predicates in contracts can mention variables from the local context. This extension is both pragmatically crucial, supporting a much more interesting range of contracts, and theoretically challenging. We define dependent versions of \lambda_C (following Findler and Felleisen&#8217;s semantics) and \lambda_H, establish type soundness&#8212;a challenging result in itself, for \lambda_H&#8212;and extend \phi and \psi accordingly. Interestingly, the intuition that the two systems are equivalent appears to break down here: we show that \psi preserves behavior exactly, but that a natural extension of \phi to the dependent case will sometimes yield terms that blame more because of a subtle difference in the treatment of dependent function contracts when the codomain contract itself abuses the argument.
</p></blockquote>
<p><b>Edit on 2009-11-03:</b> there&#8217;s a <a href="http://www.weaselhat.com/2009/11/03/contracts-made-manifest-final-version/">newer version</a>, as will appear in <a href="http://www.cse.psu.edu/popl/10/accepted-papers.html">POPL 2010</a>.</p>
<p><b>Edit on 2010-01-22:</b> I have removed the link to the submission, since it is properly subsumed by our published paper.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weaselhat.com/2009/07/30/contracts-made-manifest/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
