<?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: Three Lefts Make a Right: The Type Declaration Paradox</title>
	<atom:link href="http://osteele.com/archives/2005/01/three-lefts/feed" rel="self" type="application/rss+xml" />
	<link>http://osteele.com/archives/2005/01/three-lefts</link>
	<description>Languages of the real and artificial.</description>
	<lastBuildDate>Thu, 12 Feb 2009 00:20:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
	<item>
		<title>By: Keithb</title>
		<link>http://osteele.com/archives/2005/01/three-lefts/comment-page-1#comment-150</link>
		<dc:creator>Keithb</dc:creator>
		<pubDate>Tue, 30 May 2006 15:34:02 +0000</pubDate>
		<guid isPermaLink="false">http://osteele.com/2005/01/04/three-lefts-make-a-right-the-type-declaration-paradox#comment-150</guid>
		<description>Colour me baffled (does that make me one of the smart people?)

Of the approaches you present exactly one will definitely prevent the function body being executedwith ill-typed arguments by any client code: assertions.

Variable names, comments and structured comments will not provent client code asking for gcd(-7.62, 2+i), but they will prompt any human who&#039;s read the declaration of gcd to not casually write code that would do that, which seems like a win. This is the way programmers in languages with dynamic typing get used to thinking.

Of your proposed aproaches exactly one tells the human programmer and the client code a &lt;em&gt;direct lie&lt;/em&gt; about gcd(): type declaration. It does not merely &quot;[lose] the information that a and b are non-negative&quot;, it asserts the untruth that they can be negative. How is this any sort of benefit?</description>
		<content:encoded><![CDATA[<p>Colour me baffled (does that make me one of the smart people?)</p>
<p>Of the approaches you present exactly one will definitely prevent the function body being executedwith ill-typed arguments by any client code: assertions.</p>
<p>Variable names, comments and structured comments will not provent client code asking for gcd(-7.62, 2+i), but they will prompt any human who&#8217;s read the declaration of gcd to not casually write code that would do that, which seems like a win. This is the way programmers in languages with dynamic typing get used to thinking.</p>
<p>Of your proposed aproaches exactly one tells the human programmer and the client code a <em>direct lie</em> about gcd(): type declaration. It does not merely &#8220;[lose] the information that a and b are non-negative&#8221;, it asserts the untruth that they can be negative. How is this any sort of benefit?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Dreamer</title>
		<link>http://osteele.com/archives/2005/01/three-lefts/comment-page-1#comment-149</link>
		<dc:creator>The Dreamer</dc:creator>
		<pubDate>Wed, 05 Jan 2005 20:52:13 +0000</pubDate>
		<guid isPermaLink="false">http://osteele.com/2005/01/04/three-lefts-make-a-right-the-type-declaration-paradox#comment-149</guid>
		<description>&lt;strong&gt;Guido on static typing in Python&lt;/strong&gt;
I was just reading the latest brain dump by Guido on &#039;Optional Static Typing in Python&#039; and various comments on it.

First impression? I don&#039;t like it. The simple reason being that it makes Python much more complex. I know its the same rant again ...</description>
		<content:encoded><![CDATA[<p><strong>Guido on static typing in Python</strong><br />
I was just reading the latest brain dump by Guido on &#8216;Optional Static Typing in Python&#8217; and various comments on it.</p>
<p>First impression? I don&#8217;t like it. The simple reason being that it makes Python much more complex. I know its the same rant again &#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

