<?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: A perplexing curiosity from the depths of Scheme definitions</title>
	<atom:link href="http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/feed/" rel="self" type="application/rss+xml" />
	<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/</link>
	<description>The search for invariants</description>
	<pubDate>Wed, 08 Apr 2026 08:04:32 +0000</pubDate>
	<generator>http://polimedia.us</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: That, in a word, is the corner that I'm painted into, even though this seems an incredibly obscure situation of having a top-level macro which inserts a top-level definition, which may or may not be previously defined and depends on the interpreter's inte</title>
		<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/#comment-2988</link>
		<dc:creator>That, in a word, is the corner that I'm painted into, even though this seems an incredibly obscure situation of having a top-level macro which inserts a top-level definition, which may or may not be previously defined and depends on the interpreter's inte</dc:creator>
		<pubDate>Tue, 26 Nov 2024 21:53:59 +0000</pubDate>
		<guid isPermaLink="false">http://jfxpt.com/?p=276#comment-2988</guid>
		<description>[...] This is for what looks like the second of two articles on Scheme uncertainties, questions. The first one was about - well, they both involve top-level definitions. The second one has more to do with the [...]</description>
		<content:encoded><![CDATA[<p>[...] This is for what looks like the second of two articles on Scheme uncertainties, questions. The first one was about - well, they both involve top-level definitions. The second one has more to do with the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Another perplexing curiosity from the depths of Scheme macros &#171; Fixpoint</title>
		<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/#comment-2985</link>
		<dc:creator>Another perplexing curiosity from the depths of Scheme macros &#171; Fixpoint</dc:creator>
		<pubDate>Tue, 26 Nov 2024 06:09:53 +0000</pubDate>
		<guid isPermaLink="false">http://jfxpt.com/?p=276#comment-2985</guid>
		<description>[...] the last one, the code involved here will be pretty simple, but it'll need a bit more context loaded up. Or [...]</description>
		<content:encoded><![CDATA[<p>[...] the last one, the code involved here will be pretty simple, but it'll need a bit more context loaded up. Or [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Welsh</title>
		<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/#comment-2967</link>
		<dc:creator>Jacob Welsh</dc:creator>
		<pubDate>Thu, 14 Nov 2024 17:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://jfxpt.com/?p=276#comment-2967</guid>
		<description>Just tested on MIT Scheme, which is a rather optimized implementation. It agrees that (grabit) returns 2 but in fact raises an error on the call to (getit): "Variable reference to a syntactic keyword: whatsit". So, it does not recompile existing procedures based on the change but it does validate that variables are still variables.</description>
		<content:encoded><![CDATA[<p>Just tested on MIT Scheme, which is a rather optimized implementation. It agrees that (grabit) returns 2 but in fact raises an error on the call to (getit): "Variable reference to a syntactic keyword: whatsit". So, it does not recompile existing procedures based on the change but it does validate that variables are still variables.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Welsh</title>
		<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/#comment-2966</link>
		<dc:creator>Jacob Welsh</dc:creator>
		<pubDate>Thu, 14 Nov 2024 16:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://jfxpt.com/?p=276#comment-2966</guid>
		<description>@Diana Coman: grabit would return 2. The most relevant text I think would be (5.1):

&lt;blockquote&gt;A Scheme program consists of a sequence of expressions, definitions, and syntax definitions. ... Definitions and syntax definitions occurring at the top level of a program can be interpreted declaratively. They cause bindings to be created in the top level environment or modify the value of existing top-level bindings. Expressions occurring at the top level of a program are interpreted imperatively; they are executed in order when the program is invoked or loaded, and typically perform some kind of initialization.&lt;/blockquote&gt;

It's a bit confusing but if the "declarative" things can modify existing bindings, the intent seems to be that all these things are executed in order. Thus the effects of the syntax definition are visible at minimum to subsequent expressions.</description>
		<content:encoded><![CDATA[<p>@Diana Coman: grabit would return 2. The most relevant text I think would be (5.1):</p>
<blockquote><p>A Scheme program consists of a sequence of expressions, definitions, and syntax definitions. ... Definitions and syntax definitions occurring at the top level of a program can be interpreted declaratively. They cause bindings to be created in the top level environment or modify the value of existing top-level bindings. Expressions occurring at the top level of a program are interpreted imperatively; they are executed in order when the program is invoked or loaded, and typically perform some kind of initialization.</p></blockquote>
<p>It's a bit confusing but if the "declarative" things can modify existing bindings, the intent seems to be that all these things are executed in order. Thus the effects of the syntax definition are visible at minimum to subsequent expressions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Diana Coman</title>
		<link>http://jfxpt.com/2024/a-perplexing-curiosity-from-the-depths-of-scheme-definitions/#comment-2965</link>
		<dc:creator>Diana Coman</dc:creator>
		<pubDate>Thu, 14 Nov 2024 09:04:06 +0000</pubDate>
		<guid isPermaLink="false">http://jfxpt.com/?p=276#comment-2965</guid>
		<description>To me it seems one of those cases where the "very liberal" could do with a warning at least that something is indeed being hidden by a new definition, regardless even of what is then considered the correct resolution for that getit.

What would a (define (grabit) (whatsit)) return if defined after all the 3 definitions you list?</description>
		<content:encoded><![CDATA[<p>To me it seems one of those cases where the "very liberal" could do with a warning at least that something is indeed being hidden by a new definition, regardless even of what is then considered the correct resolution for that getit.</p>
<p>What would a (define (grabit) (whatsit)) return if defined after all the 3 definitions you list?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
