<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Toxic Elephant : Tag arc, everything about arc</title>
    <link>http://www.matijs.net/blog/tag/arc.rss</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Don't bury it in your back yard!</description>
    <item>
      <title>The Arc Challenge</title>
      <description>&lt;p&gt;Hm, so &lt;a href="http://www.paulgraham.com/arc0.html"&gt;Arc is here&lt;/a&gt;, and Paul Graham gives &lt;a href="http://paulgraham.com/arcchallenge.html"&gt;the Arc challenge&lt;/a&gt;. The answer in Arc is short indeed. First, let&amp;#8217;s see an answer in Rails (loading a framework  is allowed according to the challenge), with &lt;code&gt;said_controller.rb&lt;/code&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;SaidController&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;index&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt; &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;click&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt; &lt;span class="ident"&gt;session&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:it&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;what&lt;/span&gt;&lt;span class="punct"&gt;'];&lt;/span&gt; &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;show&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt; &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;and some templates, for the first page, &lt;code&gt;index.html.erb&lt;/code&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_erb "&gt;&amp;lt;% form_tag '/said/click' do %&amp;gt;
  &amp;lt;%= text_field_tag 'what' %&amp;gt;
  &amp;lt;%= submit_tag %&amp;gt;
&amp;lt;% end %&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;second page, &lt;code&gt;click.html.erb&lt;/code&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_erb "&gt;&amp;lt;%= link_to 'click here', {:action =&amp;gt; 'show'} %&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;third page, &lt;code&gt;show.html.erb&lt;/code&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_erb "&gt;You said &amp;lt;%= session[:it] %&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;The Rails answer may be a little longer (although by how much is hard to say due to the different syntax&amp;#8212;is &lt;code&gt;end&lt;/code&gt; a token?), but it not a case of the same but longer.&lt;/p&gt;


	&lt;p&gt;First, the Rails version is in temporal order, the Arc version is not. Perhaps there&amp;#8217;s a way of reading the Arc version that makes this order natural, but right now, it looks confusing.&lt;/p&gt;


	&lt;p&gt;But the most striking difference is that it is based on a completely different philosophy of how web applications should be developed. The Arc answer is great if you want a web application based on continuations. The Rails answer is what you would use if you want to use &lt;span class="caps"&gt;REST&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m definitely in the &lt;span class="caps"&gt;REST&lt;/span&gt; camp, which makes this example meaningless as a demonstration of Arc. It shows me that Arc can be used to write a short program that does something I don&amp;#8217;t want to do.&lt;/p&gt;


	&lt;p&gt;The ultimate question of course is whether brevity (in terms of number of tokens, not characters) is the single best metric for language power.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Someone wrote &lt;a href="http://arc-challenge.heroku.com/"&gt;a Ruby version&lt;/a&gt; that is about as short as the Arc version, uses the same paradigm, &lt;em&gt;and&lt;/em&gt; is in temporal order:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;said&lt;/span&gt;
  &lt;span class="ident"&gt;aform&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;input&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;foo&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;),&lt;/span&gt; &lt;span class="ident"&gt;submit&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;
    &lt;span class="ident"&gt;w_link&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;click here&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;you said: &lt;span class="expr"&gt;#{arg :foo}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;}}&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 17 Feb 2008 21:14:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:9c770199-a783-4d9c-a432-b4439fbb79f1</guid>
      <author>blog@matijs.net (matijs)</author>
      <comments>http://www.matijs.net/blog/2008/02/17/the-arc-challenge#comments</comments>
      <category>software</category>
      <category>ruby</category>
      <category>arc</category>
      <category>language</category>
      <category>design</category>
      <category>continuations</category>
      <category>rest</category>
      <trackback:ping>http://www.matijs.net/blog/trackbacks?article_id=the-arc-challenge&amp;day=17&amp;month=02&amp;year=2008</trackback:ping>
      <link>http://www.matijs.net/blog/2008/02/17/the-arc-challenge</link>
    </item>
  </channel>
</rss>
