<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://dynamo.iro.umontreal.ca/wiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;feed=atom&amp;action=history</id>
		<title>Talk:Namespaces - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;action=history"/>
		<updated>2013-05-20T02:59:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.16.4</generator>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=120&amp;oldid=prev</id>
		<title>Dpeschel: Added a comment.</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=120&amp;oldid=prev"/>
				<updated>2008-03-18T01:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;Added a comment.&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:30, 18 March 2008&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;::''Maybe it's better to say that explicit qualification, and the variants of &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt;, work together to create a mapping from each unqualified token to its qualified form, at each point in the source code.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;::''Maybe it's better to say that explicit qualification, and the variants of &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt;, work together to create a mapping from each unqualified token to its qualified form, at each point in the source code.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;::''Also, the standard evaluation rules define when each token is used to create a new name/value versus looking up an old one, and the namespace extension doesn't change those rules.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;::''Also, the standard evaluation rules define when each token is used to create a new name/value versus looking up an old one, and the namespace extension doesn't change those rules.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''Also, as Pflanze pointed out in IRC, evaluating &amp;lt;code&amp;gt;'a&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; doesn't involve qualification.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or local-name part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or local-name part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dpeschel</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=119&amp;oldid=prev</id>
		<title>Dpeschel: Responded to my own comments.</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=119&amp;oldid=prev"/>
				<updated>2008-03-18T01:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;Responded to my own comments.&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:21, 18 March 2008&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;But it doesn't give enough information (for me, anyway) to build a mental model of how the namespace feature works and how it might be implemented.&amp;nbsp; I want to really understand the source code and possibly write tools to analyze it, or test and possibly improve the reader, printer, and REPL.&amp;nbsp; For those things a good understanding of the namespace feature is essential.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;But it doesn't give enough information (for me, anyway) to build a mental model of how the namespace feature works and how it might be implemented.&amp;nbsp; I want to really understand the source code and possibly write tools to analyze it, or test and possibly improve the reader, printer, and REPL.&amp;nbsp; For those things a good understanding of the namespace feature is essential.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;:''I've been experimenting and talking with the page's author, [[User:Pflanze]], and I understand some of the details better now.&amp;nbsp; New comments in italics and indented.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A better page might be organized along these lines.&amp;nbsp; Unfortunately I still have mostly questions and not many answers.&amp;nbsp; Please comment, then I can continue the organization and writing.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A better page might be organized along these lines.&amp;nbsp; Unfortunately I still have mostly questions and not many answers.&amp;nbsp; Please comment, then I can continue the organization and writing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The Scheme standards define the ideas of environments, the actual environment(s) that exist(s) before programs run, and the ideas of binding and scoping.&amp;nbsp; So you get a mental model of names and values being stored as programs run, and access rules controlling which names and values programs can see and change.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The Scheme standards define the ideas of environments, the actual environment(s) that exist(s) before programs run, and the ideas of binding and scoping.&amp;nbsp; So you get a mental model of names and values being stored as programs run, and access rules controlling which names and values programs can see and change.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It sounds like Gambit's extensions to this model are very simple.&amp;nbsp; Each name is divided into two parts (namespace and local name) which are both fixed when the name is created.&amp;nbsp; There is a current namespace that sets the namespace part attached to unqualified tokens.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It sounds like Gambit's extensions to this model are very simple.&amp;nbsp; Each name is divided into two parts (namespace and local name) which are both fixed when the name is created.&amp;nbsp; There is a current namespace that sets the namespace part attached to unqualified tokens.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''Maybe it's better to say that explicit qualification, and the variants of &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt;, work together to create a mapping from each unqualified token to its qualified form, at each point in the source code.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''Also, the standard evaluation rules define when each token is used to create a new name/value versus looking up an old one, and the namespace extension doesn't change those rules.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or local-name part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or local-name part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How do you convert those strings to the namespace parts that are actually stored?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How do you convert those strings to the namespace parts that are actually stored?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The current namespace may affect the creation of new names differently than the lookup of old names.&amp;nbsp; Is it useful to describe those algorithms separately?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The current namespace may affect the creation of new names differently than the lookup of old names.&amp;nbsp; Is it useful to describe those algorithms separately?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''I've changed my mind about this.&amp;nbsp; I was looking at how the compiler uses &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt;, and I couldn't see all of the uses in effect at certain points, so I thought there might be exceptions to the rules.&amp;nbsp; Actually the rules apply to tokens at reading, and have nothing to do with evaluation (which is what creates or looks up names).''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The page should emphasize the exceptions to the rules, especially the fact that there's no way to refer to identifiers in the empty-string namespace unless that's the current one.&amp;nbsp; Saying &amp;quot;Just use ##namespace instead of namespace&amp;quot; glosses over the fact that they are diferent identifiers, not two ways of writing the same identifier.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The page should emphasize the exceptions to the rules, especially the fact that there's no way to refer to identifiers in the empty-string namespace unless that's the current one.&amp;nbsp; Saying &amp;quot;Just use ##namespace instead of namespace&amp;quot; glosses over the fact that they are diferent identifiers, not two ways of writing the same identifier.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''My edits have tried to make these points clearer.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Printing.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Printing.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How does the printer convert namespace and local-name parts back to a human-readable form?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How does the printer convert namespace and local-name parts back to a human-readable form?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;::''It prints the namespace part when it's not empty.&amp;nbsp; The current-namespace settings are not used.''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''What the namespace form does.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''What the namespace form does.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dpeschel</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=115&amp;oldid=prev</id>
		<title>Dpeschel: Scrapped numbered list (it didn't work).  Changed &quot;entry&quot; to &quot;local name&quot; to match the article.</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=115&amp;oldid=prev"/>
				<updated>2008-03-17T09:11:50Z</updated>
		
		<summary type="html">&lt;p&gt;Scrapped numbered list (it didn&amp;#39;t work).  Changed &amp;quot;entry&amp;quot; to &amp;quot;local name&amp;quot; to match the article.&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:11, 17 March 2008&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A better page might be organized along these lines.&amp;nbsp; Unfortunately I still have mostly questions and not many answers.&amp;nbsp; Please comment, then I can continue the organization and writing.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A better page might be organized along these lines.&amp;nbsp; Unfortunately I still have mostly questions and not many answers.&amp;nbsp; Please comment, then I can continue the organization and writing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;#. &lt;/del&gt;'''Storage and access.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/ins&gt;'''Storage and access.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The Scheme standards define the ideas of environments, the actual environment(s) that exist(s) before programs run, and the ideas of binding and scoping.&amp;nbsp; So you get a mental model of names and values being stored as programs run, and access rules controlling which names and values programs can see and change.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The Scheme standards define the ideas of environments, the actual environment(s) that exist(s) before programs run, and the ideas of binding and scoping.&amp;nbsp; So you get a mental model of names and values being stored as programs run, and access rules controlling which names and values programs can see and change.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It sounds like Gambit's extensions to this model are very simple.&amp;nbsp; Each name is divided into two parts (namespace and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;what I'll call entry&lt;/del&gt;) which are both fixed when the name is created.&amp;nbsp; There is a current namespace that sets the namespace part attached to unqualified &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;entry &lt;/del&gt;tokens.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It sounds like Gambit's extensions to this model are very simple.&amp;nbsp; Each name is divided into two parts (namespace and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;local name&lt;/ins&gt;) which are both fixed when the name is created.&amp;nbsp; There is a current namespace that sets the namespace part attached to unqualified tokens.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.&amp;nbsp; That would make the other points easier to think about.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;entry &lt;/del&gt;part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Are there any restrictions on what can go into a namespace or &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;local-name &lt;/ins&gt;part in this low-level view of the world -- characters that are rejected if they are found?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It's important to get this part right before writing the others.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* It's important to get this part right before writing the others.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;#. &lt;/del&gt;'''Reading.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/ins&gt;'''Reading.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This is where things get complicated.&amp;nbsp; The &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form looks like it affects tokens as they are read, but it also follows scoping rules.&amp;nbsp; So it's not only part of the lexical-analysis phase.&amp;nbsp; How early in the parsing process does it execute?&amp;nbsp; Can you think about any part of the parsing process as working with fully-qualified names, and forget about unqualified names at that point?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* This is where things get complicated.&amp;nbsp; The &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form looks like it affects tokens as they are read, but it also follows scoping rules.&amp;nbsp; So it's not only part of the lexical-analysis phase.&amp;nbsp; How early in the parsing process does it execute?&amp;nbsp; Can you think about any part of the parsing process as working with fully-qualified names, and forget about unqualified names at that point?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Obviously some forms like &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; are designed to work with unevaluated names, which delays the process of evaluating and then qualifying them.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* Obviously some forms like &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; are designed to work with unevaluated names, which delays the process of evaluating and then qualifying them.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* What strings can make up namespace and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;entry &lt;/del&gt;parts at this level?&amp;nbsp; That is, what read syntax is allowed in tokens?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* What strings can make up namespace and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;local-name &lt;/ins&gt;parts at this level?&amp;nbsp; That is, what read syntax is allowed in tokens?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* What strings can be passed to the &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* What strings can be passed to the &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How do you convert those strings to the namespace parts that are actually stored?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How do you convert those strings to the namespace parts that are actually stored?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The page should emphasize the exceptions to the rules, especially the fact that there's no way to refer to identifiers in the empty-string namespace unless that's the current one.&amp;nbsp; Saying &amp;quot;Just use ##namespace instead of namespace&amp;quot; glosses over the fact that they are diferent identifiers, not two ways of writing the same identifier.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* The page should emphasize the exceptions to the rules, especially the fact that there's no way to refer to identifiers in the empty-string namespace unless that's the current one.&amp;nbsp; Saying &amp;quot;Just use ##namespace instead of namespace&amp;quot; glosses over the fact that they are diferent identifiers, not two ways of writing the same identifier.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;#. &lt;/del&gt;'''Printing.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/ins&gt;'''Printing.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How does the printer convert namespace and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;entry &lt;/del&gt;parts back to a human-readable form?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* How does the printer convert namespace and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;local-name &lt;/ins&gt;parts back to a human-readable form?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;#. &lt;/del&gt;'''What the namespace form does.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/ins&gt;'''What the namespace form does.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* (The page already explains this pretty well.)&amp;nbsp; I don't get the impression that it imports or exports names at all (copying them from namespace to namespace at runtime).&amp;nbsp; Rather, it simply controls how unqualified identifiers are qualified.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:* (The page already explains this pretty well.)&amp;nbsp; I don't get the impression that it imports or exports names at all (copying them from namespace to namespace at runtime).&amp;nbsp; Rather, it simply controls how unqualified identifiers are qualified.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dpeschel</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=101&amp;oldid=prev</id>
		<title>Dpeschel: Recommended improvements to the namespaces page.</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php?title=Talk:Namespaces&amp;diff=101&amp;oldid=prev"/>
				<updated>2008-03-13T01:11:08Z</updated>
		
		<summary type="html">&lt;p&gt;Recommended improvements to the namespaces page.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page should greatly help anyone trying to understand the Gambit source code, because it lets people know what the # signs mean and gives them enough information to experiment (and to not get stuck).&lt;br /&gt;
&lt;br /&gt;
But it doesn't give enough information (for me, anyway) to build a mental model of how the namespace feature works and how it might be implemented.  I want to really understand the source code and possibly write tools to analyze it, or test and possibly improve the reader, printer, and REPL.  For those things a good understanding of the namespace feature is essential.&lt;br /&gt;
&lt;br /&gt;
A better page might be organized along these lines.  Unfortunately I still have mostly questions and not many answers.  Please comment, then I can continue the organization and writing.&lt;br /&gt;
&lt;br /&gt;
#. '''Storage and access.'''&lt;br /&gt;
:* The Scheme standards define the ideas of environments, the actual environment(s) that exist(s) before programs run, and the ideas of binding and scoping.  So you get a mental model of names and values being stored as programs run, and access rules controlling which names and values programs can see and change.&lt;br /&gt;
:* It sounds like Gambit's extensions to this model are very simple.  Each name is divided into two parts (namespace and what I'll call entry) which are both fixed when the name is created.  There is a current namespace that sets the namespace part attached to unqualified entry tokens.&lt;br /&gt;
:* This part should come first ''because'' the extensions are so simple and static, and because I hope all names really are stored fully qualified.  That would make the other points easier to think about.&lt;br /&gt;
:* Are there any restrictions on what can go into a namespace or entry part in this low-level view of the world -- characters that are rejected if they are found?&lt;br /&gt;
:* It's important to get this part right before writing the others.&lt;br /&gt;
&lt;br /&gt;
#. '''Reading.'''&lt;br /&gt;
:* This is where things get complicated.  The &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form looks like it affects tokens as they are read, but it also follows scoping rules.  So it's not only part of the lexical-analysis phase.  How early in the parsing process does it execute?  Can you think about any part of the parsing process as working with fully-qualified names, and forget about unqualified names at that point?&lt;br /&gt;
:* Obviously some forms like &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; are designed to work with unevaluated names, which delays the process of evaluating and then qualifying them.&lt;br /&gt;
:* What strings can make up namespace and entry parts at this level?  That is, what read syntax is allowed in tokens?&lt;br /&gt;
:* What strings can be passed to the &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; form?&lt;br /&gt;
:* How do you convert those strings to the namespace parts that are actually stored?&lt;br /&gt;
:* The current namespace may affect the creation of new names differently than the lookup of old names.  Is it useful to describe those algorithms separately?&lt;br /&gt;
:* The page should emphasize the exceptions to the rules, especially the fact that there's no way to refer to identifiers in the empty-string namespace unless that's the current one.  Saying &amp;quot;Just use ##namespace instead of namespace&amp;quot; glosses over the fact that they are diferent identifiers, not two ways of writing the same identifier.&lt;br /&gt;
&lt;br /&gt;
#. '''Printing.'''&lt;br /&gt;
:* How does the printer convert namespace and entry parts back to a human-readable form?&lt;br /&gt;
&lt;br /&gt;
#. '''What the namespace form does.'''&lt;br /&gt;
:* (The page already explains this pretty well.)  I don't get the impression that it imports or exports names at all (copying them from namespace to namespace at runtime).  Rather, it simply controls how unqualified identifiers are qualified.&lt;br /&gt;
&lt;br /&gt;
This organization may be too heavy on the theory, but it hopefully defines concepts before they're used in later parts.&lt;br /&gt;
&lt;br /&gt;
Gambit also transforms names as it generates C code, and the Gambit sources use other naming conventions like initial underscores in file names.  Those don't belong on this page but should be described on a related page.&lt;/div&gt;</summary>
		<author><name>Dpeschel</name></author>	</entry>

	</feed>