<?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"
	>
<channel>
	<title>Comments on: Are all languages leaky?</title>
	<atom:link href="http://therning.org/magnus/archives/321/feed" rel="self" type="application/rss+xml" />
	<link>http://therning.org/magnus/archives/321</link>
	<description>Incoherent mumblings</description>
	<pubDate>Tue, 06 Jan 2009 02:38:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: pozorvlak</title>
		<link>http://therning.org/magnus/archives/321#comment-82367</link>
		<dc:creator>pozorvlak</dc:creator>
		<pubDate>Tue, 16 Oct 2007 11:34:08 +0000</pubDate>
		<guid isPermaLink="false">http://therning.org/magnus/archives/321#comment-82367</guid>
		<description>&lt;p&gt;Interesting. I think the thing is that C is (intentionally) a thin layer of abstraction over the machine: C abstractions map to their implementations in a very simple way. So, while it's very useful to know what your abstractions will become translated to, it's not especially onerous.&lt;/p&gt;

&lt;p&gt;Haskell's a much thicker abstraction layer. I've got myself into some horrible messes with laziness and space leaks: in fact, pretty much every time I try to write Haskell code to work with large input or to do long calculations! At this point, you really need to know a bit about how the garbage collector works.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Interesting. I think the thing is that C is (intentionally) a thin layer of abstraction over the machine: C abstractions map to their implementations in a very simple way. So, while it&#8217;s very useful to know what your abstractions will become translated to, it&#8217;s not especially onerous.</p>
<p>Haskell&#8217;s a much thicker abstraction layer. I&#8217;ve got myself into some horrible messes with laziness and space leaks: in fact, pretty much every time I try to write Haskell code to work with large input or to do long calculations! At this point, you really need to know a bit about how the garbage collector works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Magnus</title>
		<link>http://therning.org/magnus/archives/321#comment-82114</link>
		<dc:creator>Magnus</dc:creator>
		<pubDate>Thu, 11 Oct 2007 07:31:47 +0000</pubDate>
		<guid isPermaLink="false">http://therning.org/magnus/archives/321#comment-82114</guid>
		<description>&lt;p&gt;Russel, I think I see what you mean.  In C the leakiness happens already when trying to achieve basic functionality (e.g. I need to know that a local variable is allocated on the stack, so returning a pointer to a local array is problematic) while leakiness in Haskell doesn't happen until you try to achieve functionality with certain characteristics (e.g an algorithm executing in linear time or space).  I guess this is an argument in favour of non-lazy languages in many cases, especially on embedded devices.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Russel, I think I see what you mean.  In C the leakiness happens already when trying to achieve basic functionality (e.g. I need to know that a local variable is allocated on the stack, so returning a pointer to a local array is problematic) while leakiness in Haskell doesn&#8217;t happen until you try to achieve functionality with certain characteristics (e.g an algorithm executing in linear time or space).  I guess this is an argument in favour of non-lazy languages in many cases, especially on embedded devices.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Russell O\\\'Connor</title>
		<link>http://therning.org/magnus/archives/321#comment-82113</link>
		<dc:creator>Russell O\\\'Connor</dc:creator>
		<pubDate>Thu, 11 Oct 2007 06:54:46 +0000</pubDate>
		<guid isPermaLink="false">http://therning.org/magnus/archives/321#comment-82113</guid>
		<description>&lt;p&gt;I'm not sure that Haskell abstraction is exactly leaky in this way.  The Haskell language does not give operational semantics (giving denotational semantics instead), and hence does not provide any time/space guarantees (If I understand correctly).  Therefore, any time you write a Haskell program with the intent of getting a certain space or time complexity, you are relying on compiler specific behaviour.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure that Haskell abstraction is exactly leaky in this way.  The Haskell language does not give operational semantics (giving denotational semantics instead), and hence does not provide any time/space guarantees (If I understand correctly).  Therefore, any time you write a Haskell program with the intent of getting a certain space or time complexity, you are relying on compiler specific behaviour.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
