<?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: Higher-order messaging</title>
	<atom:link href="http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/feed/" rel="self" type="application/rss+xml" />
	<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/</link>
	<description>god, tech, and other geekery</description>
	<lastBuildDate>Thu, 29 Jul 2010 15:16:02 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Reg Braithwaite</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-8</link>
		<dc:creator>Reg Braithwaite</dc:creator>
		<pubDate>Mon, 26 Mar 2007 17:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-8</guid>
		<description>&lt;p&gt;Very nice, reminds me of catenative languages like Joy, of Currying and of APL/J at the same time.&lt;/p&gt;

&lt;p&gt;A wonderful feeling.&lt;/p&gt;

&lt;p&gt;Now I&#039;m going to have to have another look at &lt;a href=&quot;http://weblog.raganwald.com/2007/03/approach-to-composing-domain-specific.html#lcir&quot; rel=&quot;nofollow&quot;&gt;List Comprehensions in Ruby&lt;/a&gt;: shouldn&#8217;t there be &#8220;Higher Order List Comprehensions in Ruby?&#8221;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Very nice, reminds me of catenative languages like Joy, of Currying and of APL/J at the same time.</p>

<p>A wonderful feeling.</p>

<p>Now I&#8217;m going to have to have another look at <a href="http://weblog.raganwald.com/2007/03/approach-to-composing-domain-specific.html#lcir" rel="nofollow">List Comprehensions in Ruby</a>: shouldn&rsquo;t there be &ldquo;Higher Order List Comprehensions in Ruby?&rdquo;</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-10</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Mon, 26 Mar 2007 17:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-10</guid>
		<description>&lt;p&gt;To me, this feels like a somewhat more understandable way to do list-comprehension-like things in Ruby, but it uses pretty much the same method as your post, Reg.&lt;/p&gt;

&lt;p&gt;Me Notyou: Not sure what you were expecting me to accomplish; I think this method goes a long way in terms of readability. That being said, I&#039;m perfectly comfortable with Ruby&#039;s established idioms for collections.&lt;/p&gt;

&lt;p&gt;As to performance, it&#039;s up to the compiler in a dynamic language to optimize method invocations; this is a growth edge for Ruby. Besides, I just wanted to show what &lt;em&gt;could&lt;/em&gt; be done; I wouldn&#039;t use this or any other &quot;interesting&quot; technique in production code without profiling.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>To me, this feels like a somewhat more understandable way to do list-comprehension-like things in Ruby, but it uses pretty much the same method as your post, Reg.</p>

<p>Me Notyou: Not sure what you were expecting me to accomplish; I think this method goes a long way in terms of readability. That being said, I&#8217;m perfectly comfortable with Ruby&#8217;s established idioms for collections.</p>

<p>As to performance, it&#8217;s up to the compiler in a dynamic language to optimize method invocations; this is a growth edge for Ruby. Besides, I just wanted to show what <em>could</em> be done; I wouldn&#8217;t use this or any other &#8220;interesting&#8221; technique in production code without profiling.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Reg Braithwaite</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-11</link>
		<dc:creator>Reg Braithwaite</dc:creator>
		<pubDate>Mon, 26 Mar 2007 17:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-11</guid>
		<description>&lt;p&gt;Unremarkable? By virtue of the fact that my remark preceded that suggestion, it is proven to be false. Just kidding! You are the best judge of whether this post blows you away or provokes a yawn.&lt;/p&gt;

&lt;p&gt;But let&#039;s talk about accomplishing &quot;very little&quot;... I honestly felt the same way when I first saw Ruby itself. What, I wondered, did Ruby do that Lisp (Scheme was my chosen dialect) hadn&#039;t done twenty years before?&lt;/p&gt;

&lt;p&gt;Lisp had mature implementations, including some incredibly fast compilers. It had phenomenal REPL environments from Emacs to GUIs. It was a regular, stable language without Ruby&#039;s annoying little corner cases. Ruby was very weak in almost every area of comparison.&lt;/p&gt;

&lt;p&gt;But you know, I had to stop and ask myself, &quot;maybe there is a Gestalt thing here, maybe Ruby has a &lt;em&gt;design&lt;/em&gt; to it that makes it more fun, or easier, or (gulp) better to use in the sense that a saw with a certain heft and balance is better to use than another with a shaper blade but a more awkward handle.&quot;&lt;/p&gt;

&lt;p&gt;I&#039;m not going to tell anyone that they&#039;re wrong and that HOM is a must-have feature. But I would encourage people reading this to at least &lt;em&gt;consider&lt;/em&gt; the idea that small differences in syntax and style may be useful even if they don&#039;t appear to do anything you couldn&#039;t have done with Ruby&#039;s existing idioms.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Unremarkable? By virtue of the fact that my remark preceded that suggestion, it is proven to be false. Just kidding! You are the best judge of whether this post blows you away or provokes a yawn.</p>

<p>But let&#8217;s talk about accomplishing &#8220;very little&#8221;&#8230; I honestly felt the same way when I first saw Ruby itself. What, I wondered, did Ruby do that Lisp (Scheme was my chosen dialect) hadn&#8217;t done twenty years before?</p>

<p>Lisp had mature implementations, including some incredibly fast compilers. It had phenomenal REPL environments from Emacs to GUIs. It was a regular, stable language without Ruby&#8217;s annoying little corner cases. Ruby was very weak in almost every area of comparison.</p>

<p>But you know, I had to stop and ask myself, &#8220;maybe there is a Gestalt thing here, maybe Ruby has a <em>design</em> to it that makes it more fun, or easier, or (gulp) better to use in the sense that a saw with a certain heft and balance is better to use than another with a shaper blade but a more awkward handle.&#8221;</p>

<p>I&#8217;m not going to tell anyone that they&#8217;re wrong and that HOM is a must-have feature. But I would encourage people reading this to at least <em>consider</em> the idea that small differences in syntax and style may be useful even if they don&#8217;t appear to do anything you couldn&#8217;t have done with Ruby&#8217;s existing idioms.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Reg Braithwaite</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-16</link>
		<dc:creator>Reg Braithwaite</dc:creator>
		<pubDate>Mon, 26 Mar 2007 17:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-16</guid>
		<description>&lt;p&gt;Ahem, what did Kevin actually say? He said: &quot;Here&#039;s this idea, it comes from outside of Ruby. Here&#039;s how to do it in Ruby.&quot; What is there to criticize outside of his implementation? Everything else is &lt;em&gt;your&lt;/em&gt; baggage you are bringing to the party.&lt;/p&gt;

&lt;p&gt;But since it is interesting baggage, let&#039;s go:&lt;/p&gt;

&lt;blockquote&gt;Ruby is interesting because it provides people who cannot contribute anything of substance a means to contribute their very own &quot;DSL&quot; to the world. Unfortunately, a so-called &quot;DSL&quot; is nothing more than syntactic sugar.&lt;/blockquote&gt;

&lt;p&gt;That&#039;s quite the observation. We could substitute &quot;Lisp Macros&quot; for Ruby and say the same thing, couldn&#039;t we?&lt;/p&gt;

&lt;p&gt;Without getting into this &lt;em&gt;particular&lt;/em&gt; DSL, isn&#039;t it a bit of a fallacy to say &quot;these people misuse a tool, therefore the tool is no damn good?&quot; There are plenty of excellent things accomplished with Ruby, things that are just outright useful. Isn&#039;t that all that matters?&lt;/p&gt;

&lt;p&gt;Now as to the objective content of your message: DSLs do &lt;em&gt;not&lt;/em&gt; increase coupling. And cohesion is a good thing: the general use of these two words is that it is beneficial to &lt;a href=&quot;http://en.wikipedia.org/wiki/Coupling_(computer_science)&quot; rel=&quot;nofollow&quot;&gt;lower coupling while increasing cohesion&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of you feel DSLs in general increase rather than decrease coupling, I invite you to articulate you thoughts on my own blog post where I claimed the opposite: that &lt;a href=&quot;http://weblog.raganwald.com/2007/03/approach-to-composing-domain-specific.html&quot; rel=&quot;nofollow&quot;&gt;DSLs allow you to separate concerns&lt;/a&gt;. I wouldn&#039;t want to burden Kevin&#039;s article with a debate about something he isn&#039;t claiming in this post.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ahem, what did Kevin actually say? He said: &quot;Here&#8217;s this idea, it comes from outside of Ruby. Here&#8217;s how to do it in Ruby.&quot; What is there to criticize outside of his implementation? Everything else is <em>your</em> baggage you are bringing to the party.</p>

<p>But since it is interesting baggage, let&#8217;s go:</p>

<blockquote>Ruby is interesting because it provides people who cannot contribute anything of substance a means to contribute their very own &#8220;DSL&#8221; to the world. Unfortunately, a so-called &#8220;DSL&#8221; is nothing more than syntactic sugar.</blockquote>

<p>That&#8217;s quite the observation. We could substitute &#8220;Lisp Macros&#8221; for Ruby and say the same thing, couldn&#8217;t we?</p>

<p>Without getting into this <em>particular</em> DSL, isn&#8217;t it a bit of a fallacy to say &#8220;these people misuse a tool, therefore the tool is no damn good?&#8221; There are plenty of excellent things accomplished with Ruby, things that are just outright useful. Isn&#8217;t that all that matters?</p>

<p>Now as to the objective content of your message: DSLs do <em>not</em> increase coupling. And cohesion is a good thing: the general use of these two words is that it is beneficial to <a href="http://en.wikipedia.org/wiki/Coupling_(computer_science)" rel="nofollow">lower coupling while increasing cohesion</a></p>

<p>Of you feel DSLs in general increase rather than decrease coupling, I invite you to articulate you thoughts on my own blog post where I claimed the opposite: that <a href="http://weblog.raganwald.com/2007/03/approach-to-composing-domain-specific.html" rel="nofollow">DSLs allow you to separate concerns</a>. I wouldn&#8217;t want to burden Kevin&#8217;s article with a debate about something he isn&#8217;t claiming in this post.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Me Notyou</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-9</link>
		<dc:creator>Me Notyou</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-9</guid>
		<description>&lt;p&gt;How shockingly unremarkable. You managed to accomplish very little with a lot of code that is probably overly slow to boot... Nice job!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>How shockingly unremarkable. You managed to accomplish very little with a lot of code that is probably overly slow to boot&#8230; Nice job!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Lucraft</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-12</link>
		<dc:creator>Daniel Lucraft</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-12</guid>
		<description>&lt;p&gt;You have a slight typo: @obj for @block in the class def of HOM.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>You have a slight typo: @obj for @block in the class def of HOM.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-13</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-13</guid>
		<description>&lt;p&gt;Daniel: good spot. I&#039;ve fixed the typo.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Daniel: good spot. I&#8217;ve fixed the typo.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: info</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-14</link>
		<dc:creator>info</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-14</guid>
		<description>&lt;p&gt;Ruby is interesting because it provides people who cannot contribute anything of substance a means to contribute their very own &quot;DSL&quot; to the world.&lt;/p&gt;

&lt;p&gt;Unfortunately, a so-called &quot;DSL&quot; is nothing more than syntactic sugar. Using a &quot;DSL&quot; gives you shorthand, but often also increases the coupling and cohesion in your software.&lt;/p&gt;

&lt;p&gt;So we have &quot;Higher Order Messaging (HOM)&quot; that is not &quot;higher order&quot; but merely &quot;higher coupling&quot;.&lt;/p&gt;

&lt;p&gt;When I look at Ruby today, I see a language that is devolving into a giant melange of fragmented idioms. A lot of energy in the Ruby community goes into acting clever vs. being clever. So-called &quot;Higher Order Messaging&quot; is a great example of something that acts clever but is not clever.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ruby is interesting because it provides people who cannot contribute anything of substance a means to contribute their very own &quot;DSL&quot; to the world.</p>

<p>Unfortunately, a so-called &quot;DSL&quot; is nothing more than syntactic sugar. Using a &quot;DSL&quot; gives you shorthand, but often also increases the coupling and cohesion in your software.</p>

<p>So we have &quot;Higher Order Messaging (HOM)&quot; that is not &quot;higher order&quot; but merely &quot;higher coupling&quot;.</p>

<p>When I look at Ruby today, I see a language that is devolving into a giant melange of fragmented idioms. A lot of energy in the Ruby community goes into acting clever vs. being clever. So-called &quot;Higher Order Messaging&quot; is a great example of something that acts clever but is not clever.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Cooper</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-15</link>
		<dc:creator>Peter Cooper</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-15</guid>
		<description>&lt;p&gt;Info: It depends on your definition of &#039;clever&#039;. At the most absolute level, most developments in programming are abstractions of other concepts. Abstractions and idioms outnumber actual innovations at a ridiculous level. This does not mean such abstractions aren&#039;t useful, however, and the application of ideas is a lot more important than ideas on their own. If &quot;higher coupling&quot; is &quot;not clever&quot; but still provides utility, there&#039;s still value there (forgetting the issue that you might be building a rather flimsy stack of cards). It might not deserve a scientific paper, granted, but it has practical uses.&lt;/p&gt;

&lt;p&gt;I certainly agree with your viewpoint that most modern DSLs are a form of syntactic sugar, but I also feel that&#039;s usually the point. It would not have been too much of a stretch to have had a similar argument against C in 1972.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Info: It depends on your definition of &#8216;clever&#8217;. At the most absolute level, most developments in programming are abstractions of other concepts. Abstractions and idioms outnumber actual innovations at a ridiculous level. This does not mean such abstractions aren&#8217;t useful, however, and the application of ideas is a lot more important than ideas on their own. If &quot;higher coupling&quot; is &quot;not clever&quot; but still provides utility, there&#8217;s still value there (forgetting the issue that you might be building a rather flimsy stack of cards). It might not deserve a scientific paper, granted, but it has practical uses.</p>

<p>I certainly agree with your viewpoint that most modern DSLs are a form of syntactic sugar, but I also feel that&#8217;s usually the point. It would not have been too much of a stretch to have had a similar argument against C in 1972.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Burns</title>
		<link>http://kbullock.ringworld.org/2007/03/26/higher-order-messaging/comment-page-1/#comment-17</link>
		<dc:creator>Peter Burns</dc:creator>
		<pubDate>Mon, 26 Mar 2007 12:01:00 +0000</pubDate>
		<guid isPermaLink="false">/2007/03/27/higher-order-messaging#comment-17</guid>
		<description>&lt;p&gt;info:&lt;/p&gt;

&lt;p&gt;Your comment is either unrelated to this post, or it is trivially false.&lt;/p&gt;

&lt;p&gt;If it&#039;s unrelated, then take it elsewhere; there are plenty of places to have a discussion about the faults and merits of DSLs.&lt;/p&gt;

&lt;p&gt;Otherwise, you consider this implementation of higher-order messaging on enumerables in Ruby to be a domain specific language.  That&#039;s arguable, but what isn&#039;t arguable is the fact that this implementation doesn&#039;t increase coupling in any way.&lt;/p&gt;

&lt;p&gt;A quick walkthrough of the dependencies shows this plainly:&lt;/p&gt;

&lt;p&gt;The extension to HigherOrderMessage has no dependencies.&lt;/p&gt;

&lt;p&gt;The extension to Module depends only on HigherOrderMessage.&lt;/p&gt;

&lt;p&gt;The extensions to Enumerable depend only on the extension to Module and the built-in Enumerable methods.&lt;/p&gt;

&lt;p&gt;All of these dependencies happen through simple method calls, no poking around in each other&#039;s internals, so any piece of this implementation can be changed independently of the others.  That is what reduced coupling is all about, yes?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>info:</p>

<p>Your comment is either unrelated to this post, or it is trivially false.</p>

<p>If it&#8217;s unrelated, then take it elsewhere; there are plenty of places to have a discussion about the faults and merits of DSLs.</p>

<p>Otherwise, you consider this implementation of higher-order messaging on enumerables in Ruby to be a domain specific language.  That&#8217;s arguable, but what isn&#8217;t arguable is the fact that this implementation doesn&#8217;t increase coupling in any way.</p>

<p>A quick walkthrough of the dependencies shows this plainly:</p>

<p>The extension to HigherOrderMessage has no dependencies.</p>

<p>The extension to Module depends only on HigherOrderMessage.</p>

<p>The extensions to Enumerable depend only on the extension to Module and the built-in Enumerable methods.</p>

<p>All of these dependencies happen through simple method calls, no poking around in each other&#8217;s internals, so any piece of this implementation can be changed independently of the others.  That is what reduced coupling is all about, yes?</p>]]></content:encoded>
	</item>
</channel>
</rss>

