<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
	>
<channel>
	<title>Comments on: A Groovy Gotcha: list#flatten with a map/pseudobean inside</title>
	<atom:link href="http://enfranchisedmind.com/blog/posts/groovy-list-flatten/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/posts/groovy-list-flatten/</link>
	<description>programming, politics, &#38; other religious issues</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:16:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Enfranchised Mind &#187; Twitter and Blogging</title>
		<link>http://enfranchisedmind.com/blog/posts/groovy-list-flatten/#comment-33390</link>
		<dc:creator>Enfranchised Mind &#187; Twitter and Blogging</dc:creator>
		<pubDate>Fri, 20 Jun 2008 05:23:36 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/?p=656#comment-33390</guid>
		<description>[...] leaves just the more thorough blog posts on topics (like Groovy&#8217;s list#flatten and the status of Ruby&#8217;s libxml) and reasonably significant announcements (like presentations [...]</description>
		<content:encoded><![CDATA[<p>[...] leaves just the more thorough blog posts on topics (like Groovy&#8217;s list#flatten and the status of Ruby&#8217;s libxml) and reasonably significant announcements (like presentations [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/posts/groovy-list-flatten/#comment-33375</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Tue, 17 Jun 2008 02:23:47 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/?p=656#comment-33375</guid>
		<description>Given the preponderance of bean structures in Java, I&#039;m actually a fan of the ability to drop maps in and just move on with life: it&#039;s very similar to Perl&#039;s old solution, and OCaml&#039;s records.

The problem is solved if maps are left unadulterated by list#flatten, so that&#039;s what we&#039;ve gone for.  I&#039;m not sure who originally decided that excising values and flattening those -- nobody on the Groovy developer list has fessed up to it or come to the defense of that implementation.</description>
		<content:encoded><![CDATA[<p>Given the preponderance of bean structures in Java, I&#8217;m actually a fan of the ability to drop maps in and just move on with life: it&#8217;s very similar to Perl&#8217;s old solution, and OCaml&#8217;s records.</p>
<p>The problem is solved if maps are left unadulterated by list#flatten, so that&#8217;s what we&#8217;ve gone for.  I&#8217;m not sure who originally decided that excising values and flattening those &#8212; nobody on the Groovy developer list has fessed up to it or come to the defense of that implementation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bhurt</title>
		<link>http://enfranchisedmind.com/blog/posts/groovy-list-flatten/#comment-33374</link>
		<dc:creator>bhurt</dc:creator>
		<pubDate>Mon, 16 Jun 2008 22:42:10 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/?p=656#comment-33374</guid>
		<description>There&#039;s a wonderfull concept from Neal Stephenson&#039;s &quot;In the Beginning was the Command Line&quot; of Metaphor Shear.  He was talking about GUIs- how suddenly you discover that your word processor isn&#039;t a typewriter, for example- but it applies here.  You had a metaphor that you could treat a map like an object, and it worked really great- right up to the point where it didn&#039;t.

This is why I&#039;m very suspicious of things masquerading as other things.  I&#039;m not talking about data abstraction layers here, for example hiding a map inside some other object.  No, I&#039;m talking about maps pretending to be objects, lists pretending to be arrays, etc.  There isn&#039;t a problem saying &quot;this isn&#039;t a map, this is a foo&quot;, because there&#039;s no preconceived notion of what a foo is, or how it behaves.  But trying to say &quot;this isn&#039;t a map, it&#039;s a list!&quot; tends to lead to tears and recriminations.  

The Liskov substitution principle applies- &quot;is a&quot; relationships are do or do not, there is no try.  And your language is doing you no favors giving you an &quot;almost is a&quot; relationship.</description>
		<content:encoded><![CDATA[<p>There&#8217;s a wonderfull concept from Neal Stephenson&#8217;s &#8220;In the Beginning was the Command Line&#8221; of Metaphor Shear.  He was talking about GUIs- how suddenly you discover that your word processor isn&#8217;t a typewriter, for example- but it applies here.  You had a metaphor that you could treat a map like an object, and it worked really great- right up to the point where it didn&#8217;t.</p>
<p>This is why I&#8217;m very suspicious of things masquerading as other things.  I&#8217;m not talking about data abstraction layers here, for example hiding a map inside some other object.  No, I&#8217;m talking about maps pretending to be objects, lists pretending to be arrays, etc.  There isn&#8217;t a problem saying &#8220;this isn&#8217;t a map, this is a foo&#8221;, because there&#8217;s no preconceived notion of what a foo is, or how it behaves.  But trying to say &#8220;this isn&#8217;t a map, it&#8217;s a list!&#8221; tends to lead to tears and recriminations.  </p>
<p>The Liskov substitution principle applies- &#8220;is a&#8221; relationships are do or do not, there is no try.  And your language is doing you no favors giving you an &#8220;almost is a&#8221; relationship.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

