<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Data-Oriented Hierarchies</title>
	<atom:link href="http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/</link>
	<description>Getting into blogging before it&#039;s too late</description>
	<lastBuildDate>Mon, 08 Apr 2013 22:33:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Working out the container-classes API &#171; «Insert Name Here»</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-258</link>
		<dc:creator><![CDATA[Working out the container-classes API &#171; «Insert Name Here»]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 12:34:26 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-258</guid>
		<description><![CDATA[[...] Ivan Miljenovic @ 10:34 PM   During AusHac, I worked on the container hierarchy I discussed in my previous post, which culminated in the initial release of container-classes. I had initially (and naively) [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Ivan Miljenovic @ 10:34 PM   During AusHac, I worked on the container hierarchy I discussed in my previous post, which culminated in the initial release of container-classes. I had initially (and naively) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan Miljenovic</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-257</link>
		<dc:creator><![CDATA[Ivan Miljenovic]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 10:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-257</guid>
		<description><![CDATA[Are you commenting on the API design of container-classes?  If so, you could have given me a couple of hours: I was just about to write a blog post about that! ;-)

My problem with having multiple such typeclasses is that it can increase type signature constraints (at least until type-class aliases are available).  Furthermore, no one API will be able to cover everything...

Finally, what does fold over non-empty containers look like?  And is such a list really used or are you just trying to come up with possible counter-examples?]]></description>
		<content:encoded><![CDATA[<p>Are you commenting on the API design of container-classes?  If so, you could have given me a couple of hours: I was just about to write a blog post about that! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>My problem with having multiple such typeclasses is that it can increase type signature constraints (at least until type-class aliases are available).  Furthermore, no one API will be able to cover everything&#8230;</p>
<p>Finally, what does fold over non-empty containers look like?  And is such a list really used or are you just trying to come up with possible counter-examples?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Lato</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-256</link>
		<dc:creator><![CDATA[John Lato]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 10:15:48 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-256</guid>
		<description><![CDATA[I don&#039;t like the CFunctor approach either, but I think it&#039;s the best solution to the problem posed by containers like StorableVector while maintaining support for things like ByteString.

I think a better approach to the Container class is to break it up so it&#039;s less monolithic.  The functions &quot;empty&quot; and &quot;null&quot; should be in one class (or possibly two), &quot;size&quot; should be in a &quot;Sizeable&quot; class, etc.  Then you can define type classes for different families of containers that call in the appropriate class constraints, e.g. Container would require Emptyable and Sizeable, NonEmptyContainer wouldn&#039;t require Emptyable, and so on.  I think this would be more usable.  Contexts would still be very short because low-level functions would only require the one or two of these that they really need, and most client code would use Container, etc. and pull in all the constraints that way.  In this vein I think Monoid should be avoided entirely.

In particular, this will allow support for container types that cannot be empty, such as

data SafeList a = SLast a &#124; SCons a (SafeList a)

One problem with previous attempts at solving this issue is the one-size-fits-all approach a monolithic container class requires.  IMO, breaking up the restrictions into small chunks will be more flexible and more usable.]]></description>
		<content:encoded><![CDATA[<p>I don&#8217;t like the CFunctor approach either, but I think it&#8217;s the best solution to the problem posed by containers like StorableVector while maintaining support for things like ByteString.</p>
<p>I think a better approach to the Container class is to break it up so it&#8217;s less monolithic.  The functions &#8220;empty&#8221; and &#8220;null&#8221; should be in one class (or possibly two), &#8220;size&#8221; should be in a &#8220;Sizeable&#8221; class, etc.  Then you can define type classes for different families of containers that call in the appropriate class constraints, e.g. Container would require Emptyable and Sizeable, NonEmptyContainer wouldn&#8217;t require Emptyable, and so on.  I think this would be more usable.  Contexts would still be very short because low-level functions would only require the one or two of these that they really need, and most client code would use Container, etc. and pull in all the constraints that way.  In this vein I think Monoid should be avoided entirely.</p>
<p>In particular, this will allow support for container types that cannot be empty, such as</p>
<p>data SafeList a = SLast a | SCons a (SafeList a)</p>
<p>One problem with previous attempts at solving this issue is the one-size-fits-all approach a monolithic container class requires.  IMO, breaking up the restrictions into small chunks will be more flexible and more usable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Data.Random &#187; Blog Archive &#187; AusHac2010 Day 2 progress</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-250</link>
		<dc:creator><![CDATA[Data.Random &#187; Blog Archive &#187; AusHac2010 Day 2 progress]]></dc:creator>
		<pubDate>Sat, 17 Jul 2010 08:15:20 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-250</guid>
		<description><![CDATA[[...] to change which data structure you want to use in your code, with minimal code change. See his blog post for more [...]]]></description>
		<content:encoded><![CDATA[<p>[...] to change which data structure you want to use in your code, with minimal code change. See his blog post for more [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan Miljenovic</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-249</link>
		<dc:creator><![CDATA[Ivan Miljenovic]]></dc:creator>
		<pubDate>Fri, 16 Jul 2010 02:52:25 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-249</guid>
		<description><![CDATA[Foldable can; Functor and Traversable can&#039;t.]]></description>
		<content:encoded><![CDATA[<p>Foldable can; Functor and Traversable can&#8217;t.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Edward Kmett</title>
		<link>http://ivanmiljenovic.wordpress.com/2010/07/14/data-oriented-hierarchies/#comment-247</link>
		<dc:creator><![CDATA[Edward Kmett]]></dc:creator>
		<pubDate>Thu, 15 Jul 2010 19:24:52 +0000</pubDate>
		<guid isPermaLink="false">http://ivanmiljenovic.wordpress.com/?p=142#comment-247</guid>
		<description><![CDATA[Note: Foldable can deal with Set. It just can&#039;t change the set in any way.]]></description>
		<content:encoded><![CDATA[<p>Note: Foldable can deal with Set. It just can&#8217;t change the set in any way.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
