<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Context Synonyms</title>
	<atom:link href="http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/feed/" rel="self" type="application/rss+xml" />
	<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 02 Oct 2011 13:50:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Edward Kmett</title>
		<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/comment-page-1/#comment-2158</link>
		<dc:creator>Edward Kmett</dc:creator>
		<pubDate>Mon, 12 Oct 2009 20:13:39 +0000</pubDate>
		<guid isPermaLink="false">http://martijn.van.steenbergen.nl/journal/?p=416#comment-2158</guid>
		<description>It requires UndecidableInstances.

Also, the &quot;the instance is sometimes used&quot; problem never materializes if you are careful to always define a new class and a sole fully universal instance for it.

I&#039;ve used this fairly extensively for years, and I know it predates me in the Haskell community by a few years. ;)

It doesn&#039;t solve everything the class alias proposals attempt to solve though: You can&#039;t retroactively define a superclass to an existing class for one; if you went to take Monad and rip it into a Bindable and Returnable class and glue that together with this style of alias, all the implementations of Monad would have to be refactored as well.</description>
		<content:encoded><![CDATA[<p>It requires UndecidableInstances.</p>
<p>Also, the &#8220;the instance is sometimes used&#8221; problem never materializes if you are careful to always define a new class and a sole fully universal instance for it.</p>
<p>I&#8217;ve used this fairly extensively for years, and I know it predates me in the Haskell community by a few years. <img src='http://martijn.van.steenbergen.nl/journal/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>It doesn&#8217;t solve everything the class alias proposals attempt to solve though: You can&#8217;t retroactively define a superclass to an existing class for one; if you went to take Monad and rip it into a Bindable and Returnable class and glue that together with this style of alias, all the implementations of Monad would have to be refactored as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicolas Pouillard</title>
		<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/comment-page-1/#comment-2156</link>
		<dc:creator>Nicolas Pouillard</dc:creator>
		<pubDate>Mon, 12 Oct 2009 13:09:20 +0000</pubDate>
		<guid isPermaLink="false">http://martijn.van.steenbergen.nl/journal/?p=416#comment-2156</guid>
		<description>I would like not have to turn on UndecidableInstances.

However I&#039;m wondering what happens if I import a module which use it. Do I fall into the undecidable world? In particular if a module use UndecidableInstances but only export decidable instances, is this module safe to import?</description>
		<content:encoded><![CDATA[<p>I would like not have to turn on UndecidableInstances.</p>
<p>However I&#8217;m wondering what happens if I import a module which use it. Do I fall into the undecidable world? In particular if a module use UndecidableInstances but only export decidable instances, is this module safe to import?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn</title>
		<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/comment-page-1/#comment-2153</link>
		<dc:creator>Martijn</dc:creator>
		<pubDate>Mon, 12 Oct 2009 08:23:33 +0000</pubDate>
		<guid isPermaLink="false">http://martijn.van.steenbergen.nl/journal/?p=416#comment-2153</guid>
		<description>Yes, I failed to mention that you indeed need that extension.

Are you saying that ContextSynonyms should imply UndecidableInstances? I wonder how difficult it is to implement ContextSynonyms so that UndecidableInstances? is on only locally to the instance definition.</description>
		<content:encoded><![CDATA[<p>Yes, I failed to mention that you indeed need that extension.</p>
<p>Are you saying that ContextSynonyms should imply UndecidableInstances? I wonder how difficult it is to implement ContextSynonyms so that UndecidableInstances? is on only locally to the instance definition.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicolas Pouillard</title>
		<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/comment-page-1/#comment-2152</link>
		<dc:creator>Nicolas Pouillard</dc:creator>
		<pubDate>Mon, 12 Oct 2009 08:02:30 +0000</pubDate>
		<guid isPermaLink="false">http://martijn.van.steenbergen.nl/journal/?p=416#comment-2152</guid>
		<description>This is indeed very nice. However I still think the context extension is worthy. The main advantage is to avoid UndecidableInstances. The good part is that internally the extension can be implemented using exactly this trick.</description>
		<content:encoded><![CDATA[<p>This is indeed very nice. However I still think the context extension is worthy. The main advantage is to avoid UndecidableInstances. The good part is that internally the extension can be implemented using exactly this trick.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yair Chuchem</title>
		<link>http://martijn.van.steenbergen.nl/journal/2009/10/11/context-synonyms/comment-page-1/#comment-2151</link>
		<dc:creator>Yair Chuchem</dc:creator>
		<pubDate>Sun, 11 Oct 2009 23:27:21 +0000</pubDate>
		<guid isPermaLink="false">http://martijn.van.steenbergen.nl/journal/?p=416#comment-2151</guid>
		<description>Very useful.

I used it here: http://hackage.haskell.org/packages/archive/ListTree/0.1/doc/html/Data-List-Tree.html

&quot;class (List t, List (ItemM t)) =&gt; Tree t&quot;</description>
		<content:encoded><![CDATA[<p>Very useful.</p>
<p>I used it here: <a href="http://hackage.haskell.org/packages/archive/ListTree/0.1/doc/html/Data-List-Tree.html" rel="nofollow">http://hackage.haskell.org/packages/archive/ListTree/0.1/doc/html/Data-List-Tree.html</a></p>
<p>&#8220;class (List t, List (ItemM t)) =&gt; Tree t&#8221;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

