<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Words matter</title>
	<atom:link href="http://existentialtype.wordpress.com/2012/02/01/words-matter/feed/" rel="self" type="application/rss+xml" />
	<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/</link>
	<description>Abstract types are existential types.</description>
	<lastBuildDate>Tue, 29 Jan 2013 15:10:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Noam</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-938</link>
		<dc:creator><![CDATA[Noam]]></dc:creator>
		<pubDate>Wed, 08 Feb 2012 08:18:41 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-938</guid>
		<description><![CDATA[You could also use &quot;mnemoid&quot;: http://www.pps.jussieu.fr/~mellies/slides/oregon-slides-2011-D.pdf]]></description>
		<content:encoded><![CDATA[<p>You could also use &#8220;mnemoid&#8221;: <a href="http://www.pps.jussieu.fr/~mellies/slides/oregon-slides-2011-D.pdf" rel="nofollow">http://www.pps.jussieu.fr/~mellies/slides/oregon-slides-2011-D.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jamesiry</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-937</link>
		<dc:creator><![CDATA[jamesiry]]></dc:creator>
		<pubDate>Sat, 04 Feb 2012 16:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-937</guid>
		<description><![CDATA[I&quot;ve had a related discussion many times, usually in response to a claim that &quot;Haskell doesn&#039;t have variables.&quot;  I&#039;ve usually convinced the other party that they&#039;re confused about what they mean by &quot;variable&quot; by pointing out that programmers frequently use terminology like &quot;immutable variable&quot; (or &quot;final variable&quot; or &quot;const variable&quot;) to talk about variables that are not or even cannot be mutated.  So if &quot;variable&quot; means mutable then they&#039;re talking about immutable mutables which clearly makes no sense. That whatever they mean by &quot;variable&quot; it does not necessarily mean &quot;mutable.&quot; From there I can start down the path of explaining what a variable really is and that mutation is a different thing.]]></description>
		<content:encoded><![CDATA[<p>I&#8221;ve had a related discussion many times, usually in response to a claim that &#8220;Haskell doesn&#8217;t have variables.&#8221;  I&#8217;ve usually convinced the other party that they&#8217;re confused about what they mean by &#8220;variable&#8221; by pointing out that programmers frequently use terminology like &#8220;immutable variable&#8221; (or &#8220;final variable&#8221; or &#8220;const variable&#8221;) to talk about variables that are not or even cannot be mutated.  So if &#8220;variable&#8221; means mutable then they&#8217;re talking about immutable mutables which clearly makes no sense. That whatever they mean by &#8220;variable&#8221; it does not necessarily mean &#8220;mutable.&#8221; From there I can start down the path of explaining what a variable really is and that mutation is a different thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jamesiry</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-936</link>
		<dc:creator><![CDATA[jamesiry]]></dc:creator>
		<pubDate>Sat, 04 Feb 2012 15:55:39 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-936</guid>
		<description><![CDATA[Mathematical variables do vary.  Graph f(x) = 2x and watch the magic]]></description>
		<content:encoded><![CDATA[<p>Mathematical variables do vary.  Graph f(x) = 2x and watch the magic</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gasche</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-935</link>
		<dc:creator><![CDATA[gasche]]></dc:creator>
		<pubDate>Sat, 04 Feb 2012 08:12:23 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-935</guid>
		<description><![CDATA[Luke, I think of the &quot;=&quot; operator as assignment, yet get the correct answer about this code: it is &#039;+&#039;, not &#039;=&#039;, that does the copying here.

You should consider the following example:

&gt;&gt;&gt; a = &#039;x&#039;
&gt;&gt;&gt; b = lambda: a
&gt;&gt;&gt; a = &#039;y&#039;
&gt;&gt;&gt; b()
&#039;y&#039;]]></description>
		<content:encoded><![CDATA[<p>Luke, I think of the &#8220;=&#8221; operator as assignment, yet get the correct answer about this code: it is &#8216;+&#8217;, not &#8216;=&#8217;, that does the copying here.</p>
<p>You should consider the following example:</p>
<p>&gt;&gt;&gt; a = &#8216;x&#8217;<br />
&gt;&gt;&gt; b = lambda: a<br />
&gt;&gt;&gt; a = &#8216;y&#8217;<br />
&gt;&gt;&gt; b()<br />
&#8216;y&#8217;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: omerzach</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-934</link>
		<dc:creator><![CDATA[omerzach]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 22:47:17 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-934</guid>
		<description><![CDATA[But if everyone called them assignables eventually some poor foreign programming language designer would come up with a great language whose only fault was syntax like &quot;ass x := 7&quot;.]]></description>
		<content:encoded><![CDATA[<p>But if everyone called them assignables eventually some poor foreign programming language designer would come up with a great language whose only fault was syntax like &#8220;ass x := 7&#8243;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Harper</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-933</link>
		<dc:creator><![CDATA[Robert Harper]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 17:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-933</guid>
		<description><![CDATA[Well, the full answer is in my book, and is hard to summarize in a brief reply.  What you&#039;re calling &quot;locations&quot; is probably synonymous with my &quot;assignables&quot;; I admit that one could have chosen another word, but my main point is that it should not be &quot;variable&quot;.  However, I would point out that the issue is NOT to do with scope or allocation extent.  The concept of name binding, and the associated concept of reference, is used throughout the book in various ways.  With respect to mutable storage cells, I model them as &quot;(scope-)free assignables&quot;, using scope extrusion to give them global scope.]]></description>
		<content:encoded><![CDATA[<p>Well, the full answer is in my book, and is hard to summarize in a brief reply.  What you&#8217;re calling &#8220;locations&#8221; is probably synonymous with my &#8220;assignables&#8221;; I admit that one could have chosen another word, but my main point is that it should not be &#8220;variable&#8221;.  However, I would point out that the issue is NOT to do with scope or allocation extent.  The concept of name binding, and the associated concept of reference, is used throughout the book in various ways.  With respect to mutable storage cells, I model them as &#8220;(scope-)free assignables&#8221;, using scope extrusion to give them global scope.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gasche</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-932</link>
		<dc:creator><![CDATA[gasche]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 10:36:46 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-932</guid>
		<description><![CDATA[&gt; Assignables admit disequality, variables do not.

Of course, but you could express this as well by using variables denoting locations, where locations are values that admit a disequality test. In the simple case where you only have locations to integers (or integer assignables), you would even define the equality test as a function of the language.

Maybe my question wasn&#039;t clear: what is the downside with the existing technique of adding a new class of values, &quot;locations&quot;, that admit assignation/dereference operations, and using the existing binding constructs of the language to denote such values? Why do you prefer to introduce this (related) concept of &quot;assignable&quot; that is not a value, but not a variable either, and is manipulated through a specific binding construction?

I thought maybe that was favored by the choice of starting with stack-scoped assignables, that naturally follow a lexical binding discipline. Maybe you also find the binding construct (decl a := e in e) is more suggestive of the semantics of enlarging the store than a (ref e) primitive would be.]]></description>
		<content:encoded><![CDATA[<p>&gt; Assignables admit disequality, variables do not.</p>
<p>Of course, but you could express this as well by using variables denoting locations, where locations are values that admit a disequality test. In the simple case where you only have locations to integers (or integer assignables), you would even define the equality test as a function of the language.</p>
<p>Maybe my question wasn&#8217;t clear: what is the downside with the existing technique of adding a new class of values, &#8220;locations&#8221;, that admit assignation/dereference operations, and using the existing binding constructs of the language to denote such values? Why do you prefer to introduce this (related) concept of &#8220;assignable&#8221; that is not a value, but not a variable either, and is manipulated through a specific binding construction?</p>
<p>I thought maybe that was favored by the choice of starting with stack-scoped assignables, that naturally follow a lexical binding discipline. Maybe you also find the binding construct (decl a := e in e) is more suggestive of the semantics of enlarging the store than a (ref e) primitive would be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sridhar Ramesh</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-931</link>
		<dc:creator><![CDATA[Sridhar Ramesh]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 08:46:23 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-931</guid>
		<description><![CDATA[I suppose you might claim that the third line also creates a new variable named &quot;a&quot;. But that can easily be countered:

a = [&#039;x&#039;]
if random.randint(0, 1) :
a = [&#039;y&#039;]
else:
a = [&#039;z&#039;]
print(a)

If each = was creating a brand new variable, then the second and third a above would be completely different variables, and thus the a in the last line could not be referring to both of them; it would at most refer to one or the other. But, of course, it does refer to both of them, because they are the same variable (or rather, assignable), the same as in the first line.

I suppose you could still cling to the claim &quot;No, it&#039;s still the case that there&#039;s no re-assignment in Python. = creates new variables, always; it&#039;s just that...&quot; through some epicycles or another, but only through enough epicycles as to get this to behave exactly the same as if Python&#039;s &quot;variables&quot; were assignables. Because they are.]]></description>
		<content:encoded><![CDATA[<p>I suppose you might claim that the third line also creates a new variable named &#8220;a&#8221;. But that can easily be countered:</p>
<p>a = ['x']<br />
if random.randint(0, 1) :<br />
a = ['y']<br />
else:<br />
a = ['z']<br />
print(a)</p>
<p>If each = was creating a brand new variable, then the second and third a above would be completely different variables, and thus the a in the last line could not be referring to both of them; it would at most refer to one or the other. But, of course, it does refer to both of them, because they are the same variable (or rather, assignable), the same as in the first line.</p>
<p>I suppose you could still cling to the claim &#8220;No, it&#8217;s still the case that there&#8217;s no re-assignment in Python. = creates new variables, always; it&#8217;s just that&#8230;&#8221; through some epicycles or another, but only through enough epicycles as to get this to behave exactly the same as if Python&#8217;s &#8220;variables&#8221; were assignables. Because they are.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sridhar Ramesh</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-930</link>
		<dc:creator><![CDATA[Sridhar Ramesh]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 07:50:43 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-930</guid>
		<description><![CDATA[For what it&#039;s worth, mhelvens, I too lean towards a name like &quot;mutables&quot; in my own head. &quot;assignables&quot; just doesn&#039;t quite have the right connotations for me; after all, even traditional mathematical variables are assigned values (e.g., as in some sense happens to the parameters of a function when it is called on particular inputs).

But even in breaking old convention, there is value in agreeing on a new convention, and as &quot;assignable&quot; has already been chosen and used in at least one significant text, it might as well serve as the new convention to rally round.]]></description>
		<content:encoded><![CDATA[<p>For what it&#8217;s worth, mhelvens, I too lean towards a name like &#8220;mutables&#8221; in my own head. &#8220;assignables&#8221; just doesn&#8217;t quite have the right connotations for me; after all, even traditional mathematical variables are assigned values (e.g., as in some sense happens to the parameters of a function when it is called on particular inputs).</p>
<p>But even in breaking old convention, there is value in agreeing on a new convention, and as &#8220;assignable&#8221; has already been chosen and used in at least one significant text, it might as well serve as the new convention to rally round.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sridhar Ramesh</title>
		<link>http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-929</link>
		<dc:creator><![CDATA[Sridhar Ramesh]]></dc:creator>
		<pubDate>Fri, 03 Feb 2012 07:33:06 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/2012/02/01/words-matter/#comment-929</guid>
		<description><![CDATA[You can totally (re-)assign to &quot;variables&quot; in Python. You&#039;ve illustrated just that with your third line above.

It just happens to be the case that Python picked this silly syntax which makes declarations and re-assignments look the same (and then some stupid voodoo rules for when to parse &#039;=&#039; as making a declaration of a new variable and when to parse it as re-assigning to an existing variable...). But underneath the superficial syntax, Python is just the same as any other typical imperative language in this respective.]]></description>
		<content:encoded><![CDATA[<p>You can totally (re-)assign to &#8220;variables&#8221; in Python. You&#8217;ve illustrated just that with your third line above.</p>
<p>It just happens to be the case that Python picked this silly syntax which makes declarations and re-assignments look the same (and then some stupid voodoo rules for when to parse &#8216;=&#8217; as making a declaration of a new variable and when to parse it as re-assigning to an existing variable&#8230;). But underneath the superficial syntax, Python is just the same as any other typical imperative language in this respective.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
