<?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: On Arc</title>
	<atom:link href="http://existentialtype.net/2008/01/30/on-arc/feed/" rel="self" type="application/rss+xml" />
	<link>http://existentialtype.net/2008/01/30/on-arc/</link>
	<description>For People Who Like Type and Types</description>
	<lastBuildDate>Tue, 20 Sep 2011 01:25:23 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: washburn</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-22108</link>
		<dc:creator>washburn</dc:creator>
		<pubDate>Thu, 27 Mar 2008 19:51:38 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-22108</guid>
		<description>@Seth: Despite having read &lt;i&gt;The Mythical Man-Month&lt;/i&gt; some years ago, I can&#039;t say that I can recall enough about what he means by a &quot;table&quot; to tell what position he (or you) is advocating.</description>
		<content:encoded><![CDATA[<p>@Seth: Despite having read <i>The Mythical Man-Month</i> some years ago, I can&#8217;t say that I can recall enough about what he means by a &#8220;table&#8221; to tell what position he (or you) is advocating.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seth Tisue</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-22107</link>
		<dc:creator>Seth Tisue</dc:creator>
		<pubDate>Thu, 27 Mar 2008 15:45:28 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-22107</guid>
		<description>&quot;Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won&#039;t usually need your flowcharts; they&#039;ll be obvious.&quot; -- Fred Brooks, The Mythical Man-Month, 1975</description>
		<content:encoded><![CDATA[<p>&#8220;Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won&#8217;t usually need your flowcharts; they&#8217;ll be obvious.&#8221; &#8212; Fred Brooks, The Mythical Man-Month, 1975</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: washburn</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-21930</link>
		<dc:creator>washburn</dc:creator>
		<pubDate>Wed, 27 Feb 2008 20:09:19 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-21930</guid>
		<description>@Gavin: I know that there are ways to do abstract data types properly in Lisp.  I just found Paul Graham&#039;s dismissal of abstract data types naïve.</description>
		<content:encoded><![CDATA[<p>@Gavin: I know that there are ways to do abstract data types properly in Lisp.  I just found Paul Graham&#8217;s dismissal of abstract data types naïve.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gavin Mendel-Gleason</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-21871</link>
		<dc:creator>Gavin Mendel-Gleason</dc:creator>
		<pubDate>Wed, 20 Feb 2008 17:02:15 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-21871</guid>
		<description>The notion that most literate lisp hacker make use of to avoid difficulties is to use functions to abstract data-structures.  Norvig makes extensive use of this strategy in &quot;Paradigms of Artificial Intelligence Programming&quot;. 

For instance with the point example: 

(defun make-p (x y) (cons x y))
(defun x-coord (p) (car p))
(defun y-coord (p) (cdr p))

The functions then serve as the abstract interface.  I think this is fairly close to the Co-Algebraic point of view, as we treat points as abstract objects coupled with operations on them, whereas Coq/Haskell/ML users would likely use a more Algebraic approach and structure things based on pattern matching.  Of course the lisp approach is entirely ad-hoc and enforces no discipline.  For disciplined Co-Algebraic stuff you might look at CafeOBJ.</description>
		<content:encoded><![CDATA[<p>The notion that most literate lisp hacker make use of to avoid difficulties is to use functions to abstract data-structures.  Norvig makes extensive use of this strategy in &#8220;Paradigms of Artificial Intelligence Programming&#8221;. </p>
<p>For instance with the point example: </p>
<p>(defun make-p (x y) (cons x y))<br />
(defun x-coord (p) (car p))<br />
(defun y-coord (p) (cdr p))</p>
<p>The functions then serve as the abstract interface.  I think this is fairly close to the Co-Algebraic point of view, as we treat points as abstract objects coupled with operations on them, whereas Coq/Haskell/ML users would likely use a more Algebraic approach and structure things based on pattern matching.  Of course the lisp approach is entirely ad-hoc and enforces no discipline.  For disciplined Co-Algebraic stuff you might look at CafeOBJ.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-21436</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Wed, 30 Jan 2008 23:19:59 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-21436</guid>
		<description>My position on types is of course well-documented, but I feel the need to play devil&#039;s (Paul Graham&#039;s?) advocate.  He did qualify it with “in exploratory programming,” which to me means throwaway code, or mostly so.  If you&#039;re prototyping and “planning to throw one away” (Brooks), then quaint ideas like representation independence are indeed less of a concern.  Also, in Paul&#039;s camp, pro-types arguments carry little weight when they refer to fancy new features fresh out of POPL, like polytypic functions or rank-2 polymorphism.  Whenever you need 10 dense POPL pages to justify some trick that Lisp hackers have been doing quite successfully since 1965, you lose.  ;)

That said, I have read a passage or two in Paul&#039;s works (too lazy to find them now) that led me to believe he&#039;s a bit misguided about modern type systems.</description>
		<content:encoded><![CDATA[<p>My position on types is of course well-documented, but I feel the need to play devil&#8217;s (Paul Graham&#8217;s?) advocate.  He did qualify it with “in exploratory programming,” which to me means throwaway code, or mostly so.  If you&#8217;re prototyping and “planning to throw one away” (Brooks), then quaint ideas like representation independence are indeed less of a concern.  Also, in Paul&#8217;s camp, pro-types arguments carry little weight when they refer to fancy new features fresh out of POPL, like polytypic functions or rank-2 polymorphism.  Whenever you need 10 dense POPL pages to justify some trick that Lisp hackers have been doing quite successfully since 1965, you lose.  <img src='http://existentialtype.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>That said, I have read a passage or two in Paul&#8217;s works (too lazy to find them now) that led me to believe he&#8217;s a bit misguided about modern type systems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: washburn</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-21430</link>
		<dc:creator>washburn</dc:creator>
		<pubDate>Wed, 30 Jan 2008 20:20:10 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-21430</guid>
		<description>@Matt: I do not know that it should truly be considered an exaggeration.  There are many operations that naturally defined inductively over a structure, and if the definition of the data type is well specified, the code pretty much writes itself.  

However, some would argue that this is a weakness of the approach because it leads to repetitive boilerplate code.  This is where type-directed programming comes into the picture.  You can&#039;t very well eliminate the boilerplate by recursively walking over and ignoring everything in a data structure except the &quot;points&quot; if you can&#039;t tell the difference between a point and any old two element list containing integers.</description>
		<content:encoded><![CDATA[<p>@Matt: I do not know that it should truly be considered an exaggeration.  There are many operations that naturally defined inductively over a structure, and if the definition of the data type is well specified, the code pretty much writes itself.  </p>
<p>However, some would argue that this is a weakness of the approach because it leads to repetitive boilerplate code.  This is where type-directed programming comes into the picture.  You can&#8217;t very well eliminate the boilerplate by recursively walking over and ignoring everything in a data structure except the &#8220;points&#8221; if you can&#8217;t tell the difference between a point and any old two element list containing integers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Hellige</title>
		<link>http://existentialtype.net/2008/01/30/on-arc/comment-page-1/#comment-21425</link>
		<dc:creator>Matt Hellige</dc:creator>
		<pubDate>Wed, 30 Jan 2008 18:03:38 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.net/2008/01/30/on-arc/#comment-21425</guid>
		<description>I&#039;m afraid it will take even longer for people to learn that telling the compiler about the structure of your data &lt;em&gt;is&lt;/em&gt; telling it about the control flow... (Yes, I admit I&#039;m exaggerating for effect, but you know what I mean.)</description>
		<content:encoded><![CDATA[<p>I&#8217;m afraid it will take even longer for people to learn that telling the compiler about the structure of your data <em>is</em> telling it about the control flow&#8230; (Yes, I admit I&#8217;m exaggerating for effect, but you know what I mean.)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

