<?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:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Apocalisp</title>
	<atom:link href="http://apocalisp.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://apocalisp.wordpress.com</link>
	<description>The end of programming as you know it</description>
	<lastBuildDate>Fri, 06 Nov 2009 19:54:51 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on A Critique of Impure Reason by Massimo A. Dentico</title>
		<link>http://apocalisp.wordpress.com/2009/04/27/a-critique-of-impure-reason/#comment-757</link>
		<dc:creator>Massimo A. Dentico</dc:creator>
		<pubDate>Fri, 06 Nov 2009 19:54:51 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=155#comment-757</guid>
		<description>No act of imagination is necessary: &lt;a href=&quot;http://www.ultratechnology.com/chips.htm&quot; rel=&quot;nofollow&quot;&gt;stack-based Forth-oriented processors&lt;/a&gt; exist from the &#039;80s, but they are based on usual &lt;a href=&quot;http://en.wikipedia.org/wiki/Von_Neumann_architecture&quot; rel=&quot;nofollow&quot;&gt;Von Neumann architecture&lt;/a&gt; anyway.

The alternative &lt;a href=&quot;http://en.wikipedia.org/wiki/Dataflow_architecture&quot; rel=&quot;nofollow&quot;&gt;dataflow architecture&lt;/a&gt;, which is an ideal mapping of pure functional programming languages to hardware, had, unfortunately, an intrinsic problem of inefficiency back when was actively researched. Quoting from Wikipedia: &quot;&lt;cite&gt;.. Instructions and their data dependencies proved to be too fine-grained to be effectively distributed in a large network. That is, the time for the instructions and tagged results to travel through a large connection network was longer than the time to actually do the computations. ..&lt;/cite&gt;&quot;

The hardware landscape is greatly changed, I don&#039;t know if this still hold today.</description>
		<content:encoded><![CDATA[<p>No act of imagination is necessary: <a href="http://www.ultratechnology.com/chips.htm" rel="nofollow">stack-based Forth-oriented processors</a> exist from the &#8217;80s, but they are based on usual <a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture" rel="nofollow">Von Neumann architecture</a> anyway.</p>
<p>The alternative <a href="http://en.wikipedia.org/wiki/Dataflow_architecture" rel="nofollow">dataflow architecture</a>, which is an ideal mapping of pure functional programming languages to hardware, had, unfortunately, an intrinsic problem of inefficiency back when was actively researched. Quoting from Wikipedia: &#8220;<cite>.. Instructions and their data dependencies proved to be too fine-grained to be effectively distributed in a large network. That is, the time for the instructions and tagged results to travel through a large connection network was longer than the time to actually do the computations. ..</cite>&#8221;</p>
<p>The hardware landscape is greatly changed, I don&#8217;t know if this still hold today.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Structural Pattern Matching in Java by Rúnar</title>
		<link>http://apocalisp.wordpress.com/2009/08/21/structural-pattern-matching-in-java/#comment-708</link>
		<dc:creator>Rúnar</dc:creator>
		<pubDate>Sun, 20 Sep 2009 04:22:25 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=185#comment-708</guid>
		<description>Neal,

As presented in the GoF book, the visit and accept methods are void. I suppose they don&#039;t really have to be, but if they aren&#039;t then you end up with something very similar to what I&#039;ve presented here.</description>
		<content:encoded><![CDATA[<p>Neal,</p>
<p>As presented in the GoF book, the visit and accept methods are void. I suppose they don&#8217;t really have to be, but if they aren&#8217;t then you end up with something very similar to what I&#8217;ve presented here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Structural Pattern Matching in Java by Neal Gafter</title>
		<link>http://apocalisp.wordpress.com/2009/08/21/structural-pattern-matching-in-java/#comment-707</link>
		<dc:creator>Neal Gafter</dc:creator>
		<pubDate>Sun, 20 Sep 2009 04:06:07 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=185#comment-707</guid>
		<description>You assert that the visitor pattern relies on mutation, but I don&#039;t see how.  I&#039;ve used the visitor pattern many times while programming with immutable data in Java.</description>
		<content:encoded><![CDATA[<p>You assert that the visitor pattern relies on mutation, but I don&#8217;t see how.  I&#8217;ve used the visitor pattern many times while programming with immutable data in Java.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on More Scala Typehackery by michid</title>
		<link>http://apocalisp.wordpress.com/2009/09/02/more-scala-typehackery/#comment-697</link>
		<dc:creator>michid</dc:creator>
		<pubDate>Fri, 04 Sep 2009 16:41:38 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=220#comment-697</guid>
		<description>Yes sure but my point is that it is only extensible to &lt;em&gt;n&lt;/em&gt; variables for a fixed &lt;em&gt;n&lt;/em&gt; not to arbitrary many.</description>
		<content:encoded><![CDATA[<p>Yes sure but my point is that it is only extensible to <em>n</em> variables for a fixed <em>n</em> not to arbitrary many.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on More Scala Typehackery by apocalisp</title>
		<link>http://apocalisp.wordpress.com/2009/09/02/more-scala-typehackery/#comment-696</link>
		<dc:creator>apocalisp</dc:creator>
		<pubDate>Fri, 04 Sep 2009 16:28:23 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=220#comment-696</guid>
		<description>I have extended this to two variables, which would indicate that it could be extended to more, but you have to modify all the Lambda traits when adding more variables. I&#039;m looking at extending to arbitrary number of variables, and my first inclination is that you&#039;re right. It will ultimately be improperly kinded.</description>
		<content:encoded><![CDATA[<p>I have extended this to two variables, which would indicate that it could be extended to more, but you have to modify all the Lambda traits when adding more variables. I&#8217;m looking at extending to arbitrary number of variables, and my first inclination is that you&#8217;re right. It will ultimately be improperly kinded.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on More Scala Typehackery by michid</title>
		<link>http://apocalisp.wordpress.com/2009/09/02/more-scala-typehackery/#comment-695</link>
		<dc:creator>michid</dc:creator>
		<pubDate>Fri, 04 Sep 2009 16:23:55 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=220#comment-695</guid>
		<description>After some more thinking I think it can&#039;t. That is whether can we extend the lambda calculus implementation to an arbitrary number of variables nor can we implement the SK(I) calculus. 

The Scala type system (in the way we use it here) seems to correspond to the simply typed lambda calculus with the kinds of the Scala types corresponding to the types of the lambda terms. The simply typed lambda calculus is not Turing complete and type assignment is decidable for it. 

&lt;pre&gt;
App[Lam[App[X, X]], Lam[App[X, X]]]#Eval
&lt;/pre&gt;

Is just not typeable in the simply typed lambda calculus and the compiler could actually do better here ;-)</description>
		<content:encoded><![CDATA[<p>After some more thinking I think it can&#8217;t. That is whether can we extend the lambda calculus implementation to an arbitrary number of variables nor can we implement the SK(I) calculus. </p>
<p>The Scala type system (in the way we use it here) seems to correspond to the simply typed lambda calculus with the kinds of the Scala types corresponding to the types of the lambda terms. The simply typed lambda calculus is not Turing complete and type assignment is decidable for it. </p>
<pre>
App[Lam[App[X, X]], Lam[App[X, X]]]#Eval
</pre>
<p>Is just not typeable in the simply typed lambda calculus and the compiler could actually do better here ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on More Scala Typehackery by apocalisp</title>
		<link>http://apocalisp.wordpress.com/2009/09/02/more-scala-typehackery/#comment-694</link>
		<dc:creator>apocalisp</dc:creator>
		<pubDate>Thu, 03 Sep 2009 14:03:48 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=220#comment-694</guid>
		<description>I&#039;m confident that it can be.</description>
		<content:encoded><![CDATA[<p>I&#8217;m confident that it can be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on More Scala Typehackery by michid</title>
		<link>http://apocalisp.wordpress.com/2009/09/02/more-scala-typehackery/#comment-693</link>
		<dc:creator>michid</dc:creator>
		<pubDate>Thu, 03 Sep 2009 09:12:04 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=220#comment-693</guid>
		<description>Pretty cool! 

Can this be extended to more than one variable? For showing Turing completeness I think one would have to extend this to an arbitrary number of variables. Probably trying to implement the SKI calculus is an easier option!?

I&#039;ll definitively have to play around with it a bit more later.</description>
		<content:encoded><![CDATA[<p>Pretty cool! </p>
<p>Can this be extended to more than one variable? For showing Turing completeness I think one would have to extend this to an arbitrary number of variables. Probably trying to implement the SKI calculus is an easier option!?</p>
<p>I&#8217;ll definitively have to play around with it a bit more later.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Scala Puzzler by michid</title>
		<link>http://apocalisp.wordpress.com/2009/08/28/a-scala-puzzler/#comment-691</link>
		<dc:creator>michid</dc:creator>
		<pubDate>Sat, 29 Aug 2009 16:02:29 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=211#comment-691</guid>
		<description>Nice puzzle, thanks!

It doesn&#039;t seem possible to implement Exp in this way. A lambda term for exponentiation is 

&lt;pre&gt;
exp = \mn.nm
&lt;/pre&gt;

AFAIU your encoding corresponds to a simply typed lambda calculus where the kinds of the Scala types correspond to the types of the lambda terms. 

The type of a church numeral is then
&lt;pre&gt;
((Num -&gt; Num) -&gt; Num) -&gt; Num
&lt;/pre&gt;
So applying a church numeral to another as done in the exp term above is a &#039;type error&#039;. 

Trying to implement exp as above with Scala results in 
&lt;pre&gt;
n takes no type parameters, expected one
&lt;/pre&gt;
and similar. 

BTW, your encoding is quite similar with what I came up with: http://michid.wordpress.com/2008/10/29/meta-programming-with-scala-conditional-compilation-and-loop-unrolling/</description>
		<content:encoded><![CDATA[<p>Nice puzzle, thanks!</p>
<p>It doesn&#8217;t seem possible to implement Exp in this way. A lambda term for exponentiation is </p>
<pre>
exp = \mn.nm
</pre>
<p>AFAIU your encoding corresponds to a simply typed lambda calculus where the kinds of the Scala types correspond to the types of the lambda terms. </p>
<p>The type of a church numeral is then</p>
<pre>
((Num -&gt; Num) -&gt; Num) -&gt; Num
</pre>
<p>So applying a church numeral to another as done in the exp term above is a &#8216;type error&#8217;. </p>
<p>Trying to implement exp as above with Scala results in </p>
<pre>
n takes no type parameters, expected one
</pre>
<p>and similar. </p>
<p>BTW, your encoding is quite similar with what I came up with: <a href="http://michid.wordpress.com/2008/10/29/meta-programming-with-scala-conditional-compilation-and-loop-unrolling/" rel="nofollow">http://michid.wordpress.com/2008/10/29/meta-programming-with-scala-conditional-compilation-and-loop-unrolling/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some Notes in Hostility Toward Subtyping by apocalisp</title>
		<link>http://apocalisp.wordpress.com/2009/08/27/hostility-toward-subtyping/#comment-689</link>
		<dc:creator>apocalisp</dc:creator>
		<pubDate>Fri, 28 Aug 2009 17:38:28 +0000</pubDate>
		<guid isPermaLink="false">http://apocalisp.wordpress.com/?p=203#comment-689</guid>
		<description>Nuttycom,

I definitely agree that you have to abandon mutable data structures.</description>
		<content:encoded><![CDATA[<p>Nuttycom,</p>
<p>I definitely agree that you have to abandon mutable data structures.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
