<?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 for It&#039;s Actors All The Way Down</title>
	<atom:link href="http://www.dalnefre.com/wp/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dalnefre.com/wp</link>
	<description>Exploring the design and implementation of reliable, scalable, massively-concurrent computer systems</description>
	<lastBuildDate>Fri, 17 Feb 2012 04:14:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Comment on Mutable Objects in Kernel by Implementing Actors in Kernel</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-20639</link>
		<dc:creator>Implementing Actors in Kernel</dc:creator>
		<pubDate>Fri, 17 Feb 2012 04:14:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-20639</guid>
		<description>[...] predicates actor? and behavior? are exported. We also create an empty queue for events, using the object-oriented queue implementation shown [...]</description>
		<content:encoded><![CDATA[<p>[...] predicates actor? and behavior? are exported. We also create an empty queue for events, using the object-oriented queue implementation shown [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deconstructing the Actor Model by Implementing Actors in Kernel</title>
		<link>http://www.dalnefre.com/wp/2010/05/deconstructing-the-actor-model/comment-page-1/#comment-20638</link>
		<dc:creator>Implementing Actors in Kernel</dc:creator>
		<pubDate>Fri, 17 Feb 2012 04:12:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=4#comment-20638</guid>
		<description>[...] provides a solid foundation on which we will build a simple implementation of the Actor primitives (CREATE, SEND and BECOME). Encapsulated types and first-class environments help express Actor [...]</description>
		<content:encoded><![CDATA[<p>[...] provides a solid foundation on which we will build a simple implementation of the Actor primitives (CREATE, SEND and BECOME). Encapsulated types and first-class environments help express Actor [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parsing Expression Grammars, part 4 by Ben White</title>
		<link>http://www.dalnefre.com/wp/2011/05/parsing-expression-grammars-part-4/comment-page-1/#comment-19970</link>
		<dc:creator>Ben White</dc:creator>
		<pubDate>Tue, 07 Feb 2012 03:38:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=94#comment-19970</guid>
		<description>Nice article, in particular where you state, &quot;Notice that both of these grammars describe the same language.&quot; Certainly the wikipedia article isn&#039;t very helpful.
 
I recently encountered this problem while trying to parse statements of the form &quot;a[x].b[y] = c&quot; where left to right associativity is required and the operators have equal precedence.</description>
		<content:encoded><![CDATA[<p>Nice article, in particular where you state, &#8220;Notice that both of these grammars describe the same language.&#8221; Certainly the wikipedia article isn&#8217;t very helpful.</p>
<p>I recently encountered this problem while trying to parse statements of the form &#8220;a[x].b[y] = c&#8221; where left to right associativity is required and the operators have equal precedence.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by John Shutt</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19125</link>
		<dc:creator>John Shutt</dc:creator>
		<pubDate>Sun, 22 Jan 2012 20:22:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19125</guid>
		<description>I had to think about this, but (as often happens) eventually decided most solutions are making it harder than it has to be.  A straightforward approach is to use strings.  Strings have an external representation (a weakness of encapsulated types that I recognized from the outset but didn&#039;t, and still don&#039;t, see an obviously &quot;Right&quot; way to fix).  Strings are also immutable (though I see I never even started adding content to that section of the Report).</description>
		<content:encoded><![CDATA[<p>I had to think about this, but (as often happens) eventually decided most solutions are making it harder than it has to be.  A straightforward approach is to use strings.  Strings have an external representation (a weakness of encapsulated types that I recognized from the outset but didn&#8217;t, and still don&#8217;t, see an obviously &#8220;Right&#8221; way to fix).  Strings are also immutable (though I see I never even started adding content to that section of the Report).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by Dale Schumacher</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19061</link>
		<dc:creator>Dale Schumacher</dc:creator>
		<pubDate>Sat, 21 Jan 2012 16:40:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19061</guid>
		<description>Of course!  How could I have forgotten about &lt;em&gt;procedural representation&lt;/em&gt;?  I presume you mean the technique described in &lt;a href=&quot;http://mitpress.mit.edu/sicp/full-text/book/book.html&quot; rel=&quot;nofollow&quot;&gt;SICP&lt;/a&gt; section &lt;a href=&quot;http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#%25_sec_2.1.3&quot; rel=&quot;nofollow&quot;&gt;2.1.3&lt;/a&gt;.

Message-passing style, as described in &lt;a href=&quot;http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-17.html#%25_sec_2.4.3&quot; rel=&quot;nofollow&quot;&gt;2.4.3&lt;/a&gt; and elaborated in &lt;a href=&quot;http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-20.html#%25_sec_3.1.1&quot; rel=&quot;nofollow&quot;&gt;3.1.1&lt;/a&gt;, uses quoted symbols to implement dynamic dispatch.  Since Kernel discourages quoting, what would you recommend we use in place of these symbolic constants?</description>
		<content:encoded><![CDATA[<p>Of course!  How could I have forgotten about <em>procedural representation</em>?  I presume you mean the technique described in <a href="http://mitpress.mit.edu/sicp/full-text/book/book.html" rel="nofollow">SICP</a> section <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#%25_sec_2.1.3" rel="nofollow">2.1.3</a>.</p>
<p>Message-passing style, as described in <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-17.html#%25_sec_2.4.3" rel="nofollow">2.4.3</a> and elaborated in <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-20.html#%25_sec_3.1.1" rel="nofollow">3.1.1</a>, uses quoted symbols to implement dynamic dispatch.  Since Kernel discourages quoting, what would you recommend we use in place of these symbolic constants?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by John Shutt</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19021</link>
		<dc:creator>John Shutt</dc:creator>
		<pubDate>Fri, 20 Jan 2012 21:51:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19021</guid>
		<description>The *other* other structured data type is, of course, the combiner.  Using combiners as objects is a standard exercise in Scheme, and I gather past RxRS authors have had that style specifically in mind.  Plus, of course, it&#039;s the origin of the claimed analogy between procedures and actors.  Oh yes, and in reflective Lisps, from what I understand of them, it&#039;s a standard technique to use procedures as environments.</description>
		<content:encoded><![CDATA[<p>The *other* other structured data type is, of course, the combiner.  Using combiners as objects is a standard exercise in Scheme, and I gather past RxRS authors have had that style specifically in mind.  Plus, of course, it&#8217;s the origin of the claimed analogy between procedures and actors.  Oh yes, and in reflective Lisps, from what I understand of them, it&#8217;s a standard technique to use procedures as environments.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by Dale Schumacher</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19009</link>
		<dc:creator>Dale Schumacher</dc:creator>
		<pubDate>Fri, 20 Jan 2012 15:03:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19009</guid>
		<description>Interestingly enough, that&#039;s one of the points I wanted to make with this article.  What other structured types does Kernel offer?  Pairs, which have a rich history demonstrating their use in building nearly anything (but with what efficiency).  And Environments, which are mutable Dictionaries (think Smalltalk) with a multiple-inheritence chaining mechanism.  

I think one of the best things about Kernel&#039;s environments is that mutation is limited to environments to which you have direct access (not just inherited).  This supports a copy-on-write semantics which reminds me of JavaScript objects. YMMV.</description>
		<content:encoded><![CDATA[<p>Interestingly enough, that&#8217;s one of the points I wanted to make with this article.  What other structured types does Kernel offer?  Pairs, which have a rich history demonstrating their use in building nearly anything (but with what efficiency).  And Environments, which are mutable Dictionaries (think Smalltalk) with a multiple-inheritence chaining mechanism.  </p>
<p>I think one of the best things about Kernel&#8217;s environments is that mutation is limited to environments to which you have direct access (not just inherited).  This supports a copy-on-write semantics which reminds me of JavaScript objects. YMMV.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by Manuel Simoni</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19007</link>
		<dc:creator>Manuel Simoni</dc:creator>
		<pubDate>Fri, 20 Jan 2012 14:52:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19007</guid>
		<description>I object to the use of environments as &quot;objects&quot;, even if only internal to the implementation. Why? Environments are more powerful than a mere dictionary (e.g. they have a parent link and special rules governing name lookup). I fear that &quot;let&#039;s use 1st class environments for everything&quot; may become the new &quot;let&#039;s use conses for everything&quot; in Kernel.</description>
		<content:encoded><![CDATA[<p>I object to the use of environments as &#8220;objects&#8221;, even if only internal to the implementation. Why? Environments are more powerful than a mere dictionary (e.g. they have a parent link and special rules governing name lookup). I fear that &#8220;let&#8217;s use 1st class environments for everything&#8221; may become the new &#8220;let&#8217;s use conses for everything&#8221; in Kernel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by Dale Schumacher</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-19006</link>
		<dc:creator>Dale Schumacher</dc:creator>
		<pubDate>Fri, 20 Jan 2012 14:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-19006</guid>
		<description>Thanks for your precision, John.

Operationally, my &lt;code&gt;$set!&lt;/code&gt; is the same as your standard version. Only my explanation is less general, focusing only on the &quot;special case&quot; of a single named field.

I considered using &lt;code&gt;make-environment&lt;/code&gt; to construct a truly-empy &quot;dictionary&quot; for the object.  That&#039;s still a valid implementation choice.  In the back of my mind I was considering potential extensions for inheritance.  Also, using the local environment was the simplest thing that seemed to work, and (as you said) is relatively harmless.

Typos fixed.  Thanks!</description>
		<content:encoded><![CDATA[<p>Thanks for your precision, John.</p>
<p>Operationally, my <code>$set!</code> is the same as your standard version. Only my explanation is less general, focusing only on the &#8220;special case&#8221; of a single named field.</p>
<p>I considered using <code>make-environment</code> to construct a truly-empy &#8220;dictionary&#8221; for the object.  That&#8217;s still a valid implementation choice.  In the back of my mind I was considering potential extensions for inheritance.  Also, using the local environment was the simplest thing that seemed to work, and (as you said) is relatively harmless.</p>
<p>Typos fixed.  Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable Objects in Kernel by John Shutt</title>
		<link>http://www.dalnefre.com/wp/2012/01/mutable-objects-in-kernel/comment-page-1/#comment-18980</link>
		<dc:creator>John Shutt</dc:creator>
		<pubDate>Fri, 20 Jan 2012 05:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.dalnefre.com/wp/?p=137#comment-18980</guid>
		<description>Neatly done.  A few items (most interesting first):

Your $set! does not appear to be less general than Kernel&#039;s built-in version; it should handle compound definiends just fine.  Though it seems a worthwhile exercise to implement it here.

In new-queue, the local environment has no initial *local* bindings.  It does have plenty of visible bindings, not that they do any harm since the environment is encapsulated so that those who can access it are already able to see its parent environment.  Using the local environment brings home the lesson that it&#039;s really an *environment*, in the usual sense.

&quot;indicating that this is causes mutation&quot; (spurious &quot;is&quot;).
&quot;an new (empty) queue&quot; (spurious &quot;-n&quot;).</description>
		<content:encoded><![CDATA[<p>Neatly done.  A few items (most interesting first):</p>
<p>Your $set! does not appear to be less general than Kernel&#8217;s built-in version; it should handle compound definiends just fine.  Though it seems a worthwhile exercise to implement it here.</p>
<p>In new-queue, the local environment has no initial *local* bindings.  It does have plenty of visible bindings, not that they do any harm since the environment is encapsulated so that those who can access it are already able to see its parent environment.  Using the local environment brings home the lesson that it&#8217;s really an *environment*, in the usual sense.</p>
<p>&#8220;indicating that this is causes mutation&#8221; (spurious &#8220;is&#8221;).<br />
&#8220;an new (empty) queue&#8221; (spurious &#8220;-n&#8221;).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

