<?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: The Joy of Concatenative Languages Part 2: Innately Functional</title>
	<atom:link href="http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/feed" rel="self" type="application/rss+xml" />
	<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2</link>
	<description>(permanently in beta)</description>
	<lastBuildDate>Sun, 29 Aug 2010 20:01:44 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Samuel A. Falvo II</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4850</link>
		<dc:creator>Samuel A. Falvo II</dc:creator>
		<pubDate>Fri, 19 Jun 2009 16:38:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4850</guid>
		<description>@Tracy,

No.  His equivalence is correct.  Your equivalence would be 7 2 3 + + - which would produce a stack underflow.</description>
		<content:encoded><![CDATA[<p>@Tracy,</p>
<p>No.  His equivalence is correct.  Your equivalence would be 7 2 3 + + &#8211; which would produce a stack underflow.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tracy Harms</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4849</link>
		<dc:creator>Tracy Harms</dc:creator>
		<pubDate>Thu, 18 Jun 2009 22:50:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4849</guid>
		<description>You proposed the following Scala as equivalent:


minus(7, plus(2, 3))


To be the equivalent you seek, wouldn&#039;t the code actually need to be as follows?


minus(plus(7, 2, 3))


(Here let&#039;s assume the definitions of plus and minus have been changed so that they apply only to the last two items in the list.)</description>
		<content:encoded><![CDATA[<p>You proposed the following Scala as equivalent:</p>
<p>minus(7, plus(2, 3))</p>
<p>To be the equivalent you seek, wouldn&#8217;t the code actually need to be as follows?</p>
<p>minus(plus(7, 2, 3))</p>
<p>(Here let&#8217;s assume the definitions of plus and minus have been changed so that they apply only to the last two items in the list.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Samuel A. Falvo II</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4408</link>
		<dc:creator>Samuel A. Falvo II</dc:creator>
		<pubDate>Fri, 19 Dec 2008 20:48:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4408</guid>
		<description>The concatenative language&#039;s concept of a &quot;stack&quot; actually is a very precise, mathematically defined construct: a last in, first out stack.

The dip operator is 100% compatible with this definition.  It pops the top of the stack, applies the quotation to the resulting stack, then pushes the original item back onto the stack.  At NO TIME does the dip operator violate the semantics of the mathematical concept of a stack.

In the real-world, of course, our computers do not run on stack architectures; therefore, it might store the top of stack in another CPU register.  Or, it might be pushed onto the hardware call stack, as in Forth with &gt;R and R&gt;.  Or, who knows, it might be stored in a well-known, reserved memory location (a la 6502&#039;s zero-page locations).  This is an implementation detail that you needn&#039;t concern yourself with.</description>
		<content:encoded><![CDATA[<p>The concatenative language&#8217;s concept of a &#8220;stack&#8221; actually is a very precise, mathematically defined construct: a last in, first out stack.</p>
<p>The dip operator is 100% compatible with this definition.  It pops the top of the stack, applies the quotation to the resulting stack, then pushes the original item back onto the stack.  At NO TIME does the dip operator violate the semantics of the mathematical concept of a stack.</p>
<p>In the real-world, of course, our computers do not run on stack architectures; therefore, it might store the top of stack in another CPU register.  Or, it might be pushed onto the hardware call stack, as in Forth with &gt;R and R&gt;.  Or, who knows, it might be stored in a well-known, reserved memory location (a la 6502&#8217;s zero-page locations).  This is an implementation detail that you needn&#8217;t concern yourself with.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Slava Pestov</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4406</link>
		<dc:creator>Slava Pestov</dc:creator>
		<pubDate>Thu, 18 Dec 2008 03:16:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4406</guid>
		<description>kib2, there is a lot of documentation in Factor. Look at http://docs.factorcode.org or use the browser in the Factor UI, you will find that the entire core language and most of the libraries are extensively documented. For introductory material, there is a tutorial as well as a cookbook.</description>
		<content:encoded><![CDATA[<p>kib2, there is a lot of documentation in Factor. Look at <a href="http://docs.factorcode.org" rel="nofollow">http://docs.factorcode.org</a> or use the browser in the Factor UI, you will find that the entire core language and most of the libraries are extensively documented. For introductory material, there is a tutorial as well as a cookbook.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kib2</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4402</link>
		<dc:creator>kib2</dc:creator>
		<pubDate>Tue, 16 Dec 2008 21:44:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4402</guid>
		<description>I tought Rebol&#039;s parse was using a parsing expression grammar algo too, but maybe I was wrong.

I already tried Factor wich seems a very interesting language, but the main problem is actually the total lack of documentation. Sure, there&#039;s a &quot;Your first program&quot; section and then the &quot;index&quot;, but how can learn a programming language from an index (particularly when it is a stack based one)? Not me. I already told Slava about this fact on IRC, and I can understand he&#039;s busy developping Factor; but one must admit that a language without docs is just useless. Some efforts have been done by Aaron Schaefer recently by writting some blog posts about Factor, and they&#039;re really great. Here too, I&#039;m looking forward for his third part.</description>
		<content:encoded><![CDATA[<p>I tought Rebol&#8217;s parse was using a parsing expression grammar algo too, but maybe I was wrong.</p>
<p>I already tried Factor wich seems a very interesting language, but the main problem is actually the total lack of documentation. Sure, there&#8217;s a &#8220;Your first program&#8221; section and then the &#8220;index&#8221;, but how can learn a programming language from an index (particularly when it is a stack based one)? Not me. I already told Slava about this fact on IRC, and I can understand he&#8217;s busy developping Factor; but one must admit that a language without docs is just useless. Some efforts have been done by Aaron Schaefer recently by writting some blog posts about Factor, and they&#8217;re really great. Here too, I&#8217;m looking forward for his third part.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wm Tanksley</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4401</link>
		<dc:creator>Wm Tanksley</dc:creator>
		<pubDate>Tue, 16 Dec 2008 15:50:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4401</guid>
		<description>Christophe, the &quot;stack&quot; in stack languages is the means for communicating between function invocations. Some stack languages, like Forth, actually have two stacks, with the second one serving as the return stack and a temporary data storage space; but only one is absolutely needed. There&#039;s an experimental concatenative language named &quot;xy&quot; which uses a queue, and it&#039;s possible to code a &quot;stackless&quot; call structure so that a call stack isn&#039;t used (although I don&#039;t know whether anyone&#039;s done that yet for a concatenative language).</description>
		<content:encoded><![CDATA[<p>Christophe, the &#8220;stack&#8221; in stack languages is the means for communicating between function invocations. Some stack languages, like Forth, actually have two stacks, with the second one serving as the return stack and a temporary data storage space; but only one is absolutely needed. There&#8217;s an experimental concatenative language named &#8220;xy&#8221; which uses a queue, and it&#8217;s possible to code a &#8220;stackless&#8221; call structure so that a call stack isn&#8217;t used (although I don&#8217;t know whether anyone&#8217;s done that yet for a concatenative language).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christophe Poucet</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4400</link>
		<dc:creator>Christophe Poucet</dc:creator>
		<pubDate>Tue, 16 Dec 2008 15:11:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4400</guid>
		<description>Hello Slava,

I admit that I find the concept of the &#039;stack&#039; in stack languages then rather ambiguously phrased.  To me it just seems -a- datastructure that is threaded along that just happens to be a stack.  But it appears that the true call stack is that hidden stack you refer to.  Is this correct?</description>
		<content:encoded><![CDATA[<p>Hello Slava,</p>
<p>I admit that I find the concept of the &#8217;stack&#8217; in stack languages then rather ambiguously phrased.  To me it just seems -a- datastructure that is threaded along that just happens to be a stack.  But it appears that the true call stack is that hidden stack you refer to.  Is this correct?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wm Tanksley</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4399</link>
		<dc:creator>Wm Tanksley</dc:creator>
		<pubDate>Tue, 16 Dec 2008 01:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4399</guid>
		<description>kib2, Rebol is a cool language; it&#039;s not a coincidence that its author has a lot of experience with Forth. Its DSL capabilities lie in two main areas: first, its syntax is simple enough to be generally useful for many domains; and second, it comes with a simple LL parser that&#039;s well-integrated. Factor excels over Rebol in both of these ways -- it has a PEG parser (which is far more powerful than Rebol&#039;s LL parser), and its syntax is strictly left-to-right (as opposed to Rebol&#039;s left to right reading with right-to-left execution).

Still, Rebol is a good language. I hope its new version does well; I&#039;ve been watching it hoping for some results for quite some time.</description>
		<content:encoded><![CDATA[<p>kib2, Rebol is a cool language; it&#8217;s not a coincidence that its author has a lot of experience with Forth. Its DSL capabilities lie in two main areas: first, its syntax is simple enough to be generally useful for many domains; and second, it comes with a simple LL parser that&#8217;s well-integrated. Factor excels over Rebol in both of these ways &#8212; it has a PEG parser (which is far more powerful than Rebol&#8217;s LL parser), and its syntax is strictly left-to-right (as opposed to Rebol&#8217;s left to right reading with right-to-left execution).</p>
<p>Still, Rebol is a good language. I hope its new version does well; I&#8217;ve been watching it hoping for some results for quite some time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Slava Pestov</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4398</link>
		<dc:creator>Slava Pestov</dc:creator>
		<pubDate>Tue, 16 Dec 2008 00:47:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4398</guid>
		<description>Christophe Poucet: usually the dip operator is implemented by placing the element on a hidden extra stack. So [ ... ] dip in Cat/Joy/Factor is analogous to &gt;r ... r&gt; in Forth, except there&#039;s no way to mess up and write code with unbalanced &gt;r/r&gt;&#039;s.

codist: Cat has a type system, first-class functions and automatic memory management. Forth does not.</description>
		<content:encoded><![CDATA[<p>Christophe Poucet: usually the dip operator is implemented by placing the element on a hidden extra stack. So [ ... ] dip in Cat/Joy/Factor is analogous to &gt;r &#8230; r&gt; in Forth, except there&#8217;s no way to mess up and write code with unbalanced &gt;r/r&gt;&#8217;s.</p>
<p>codist: Cat has a type system, first-class functions and automatic memory management. Forth does not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kib2</title>
		<link>http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2/comment-page-1#comment-4397</link>
		<dc:creator>kib2</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:53:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.codecommit.com/blog/cat/the-joy-of-concatenative-languages-part-2#comment-4397</guid>
		<description>First thanks for these great articles, I&#039;m looking forward for part 3.

&gt;&gt;If you want to create an internal DSL, there will be no language better suited to it 
&gt;&gt;than one which is concatenative, Cat, Factor or otherwise.

I think you forgot to mention Rebol : creating a DSL with it is really straightforward.</description>
		<content:encoded><![CDATA[<p>First thanks for these great articles, I&#8217;m looking forward for part 3.</p>
<p>&gt;&gt;If you want to create an internal DSL, there will be no language better suited to it<br />
&gt;&gt;than one which is concatenative, Cat, Factor or otherwise.</p>
<p>I think you forgot to mention Rebol : creating a DSL with it is really straightforward.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
