<?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>
	<pubDate>Tue, 06 Jan 2009 03:49:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<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't say that I can recall enough about what he means by a "table" 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>"Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious." -- 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'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 "Paradigms of Artificial Intelligence Programming". 

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's (Paul Graham's?) advocate.  He did qualify it with “in exploratory programming,” which to me means throwaway code, or mostly so.  If you're prototyping and “planning to throw one away” (Brooks), then quaint ideas like representation independence are indeed less of a concern.  Also, in Paul'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's works (too lazy to find them now) that led me to believe he'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't very well eliminate the boilerplate by recursively walking over and ignoring everything in a data structure except the "points" if you can'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'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'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>
