<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Drinkable Chicken &#187; scheme</title>
	<atom:link href="http://4.flowsnake.org/archives/tag/scheme/feed" rel="self" type="application/rss+xml" />
	<link>http://4.flowsnake.org</link>
	<description>A Pythoneer&#039;s adventures with Scheme, etc.</description>
	<lastBuildDate>Fri, 15 Jul 2011 08:53:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Interlude</title>
		<link>http://4.flowsnake.org/archives/1046</link>
		<comments>http://4.flowsnake.org/archives/1046#comments</comments>
		<pubDate>Sun, 20 Feb 2011 21:24:31 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gauche]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=1046</guid>
		<description><![CDATA[It seems my &#8220;new&#8221; iMac is borked. The only Macs I have now are G3s, so blogging and hacking will be limited until I can afford a new one. (Speaking of which, I&#8217;m selling a bunch of stuff again. :-) I suppose I *could* whip up Yet Another Blogging System using Gauche, but yeah&#8230; you [...]]]></description>
			<content:encoded><![CDATA[<p>It seems my &#8220;new&#8221; iMac is borked. The only Macs I have now are G3s, so blogging and hacking will be limited until I can afford a new one. (Speaking of which, I&#8217;m <a href="http://shop.ebay.com/zephyrfalcon_one/m.html?_nkw=&amp;_armrs=1&amp;_from=&amp;_ipg=&amp;_trksid=p3686">selling</a> a bunch of stuff again. :-)</p>
<p>I suppose I *could* whip up Yet Another Blogging System using <a href="http://practical-scheme.net/gauche/">Gauche</a>, but yeah&#8230; you can only write the same software so many times. ;-)</p>
<p>I was also trying to hack on something else in Gauche, but life kept interfering&#8230;</p>
<p>(( Gauche Scheme is seriously underrated, by the way. Although it&#8217;s an interpreter, it&#8217;s pretty fast; in an informal benchmark that I did just for the hell of it, it beat Chicken, Gambit, Scheme48 and Racket. Oh, and Python. ;-) I noticed this before, when it processed SXML much faster than *compiled* Chicken code. Also, it comes with a bunch of libraries baked in, and has a decent Windows version. What&#8217;s not to like? Well I do have a list of ideas for improvement actually, maybe someday I&#8217;ll blog about it&#8230; ))</p>
<p>Anyway, the plan is now, to raise ~$2000 so I can buy an iPad and a Mac that can actually be used to develop iOS software. Hence the renewed selling of stuff&#8230; As usual, I am also available for odd jobs and part-time work.</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/1046/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python vs Scheme: lists</title>
		<link>http://4.flowsnake.org/archives/1035</link>
		<comments>http://4.flowsnake.org/archives/1035#comments</comments>
		<pubDate>Tue, 16 Nov 2010 19:43:36 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Python vs Scheme]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=1035</guid>
		<description><![CDATA[I have resumed my &#8220;Python vs Scheme&#8221; series. The latest installment can be found on my new blog. (I&#8217;m announcing it here because otherwise nobody would notice. &#60;0.5 wink&#62;) As always, comments and corrections are welcome. ^_^]]></description>
			<content:encoded><![CDATA[<p>I have resumed my &#8220;Python vs Scheme&#8221; series. The latest installment can be found on my <a href="http://6.flowsnake.org/pvs-lists.html">new blog</a>. (I&#8217;m announcing it here because otherwise nobody would notice. &lt;0.5 wink&gt;)</p>
<p>As always, comments and corrections are welcome. ^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/1035/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chickadee</title>
		<link>http://4.flowsnake.org/archives/950</link>
		<comments>http://4.flowsnake.org/archives/950#comments</comments>
		<pubDate>Thu, 20 May 2010 09:48:23 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[chicken]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=950</guid>
		<description><![CDATA[In other news, there is a new documentation server for Chicken Scheme online. It&#8217;s called Chickadee and it looks pretty damn useful. You can look up built-in functions, SRFIs and eggs. I&#8217;m currently working on a little project that uses Chicken, so I guess I&#8217;ll be using this a lot. ^_^ IMHO, Chicken and Gauche [...]]]></description>
			<content:encoded><![CDATA[<p>In other news, there is a new documentation server for Chicken Scheme online. It&#8217;s called <a href="http://3e8.org/chickadee/">Chickadee</a> and it looks pretty damn useful. You can look up built-in functions, SRFIs and eggs. I&#8217;m currently working on a little project that uses Chicken, so I guess I&#8217;ll be using this a lot. ^_^</p>
<p>IMHO, Chicken and Gauche are the two most desirable Scheme implementations at the moment. They both have a pragmatic approach that isn&#8217;t always present in other implementations. (Although I haven&#8217;t tried every single one of them&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/950/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gauche</title>
		<link>http://4.flowsnake.org/archives/943</link>
		<comments>http://4.flowsnake.org/archives/943#comments</comments>
		<pubDate>Sun, 02 May 2010 21:19:14 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gauche]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=943</guid>
		<description><![CDATA[I just discovered Gauche Scheme. I have been looking for a Lisp/Scheme dialect for my latest pet project, and it seems this is just what the doctor ordered. It&#8217;s cross-platform (Unixoid systems and Windows) Builds out of the box on Mac OS X, even on my old G3 Supports both hygienic and &#8220;dirty&#8221; macros Comes [...]]]></description>
			<content:encoded><![CDATA[<p>I just discovered <a href="http://practical-scheme.net/gauche/">Gauche Scheme</a>. I have been looking for a Lisp/Scheme dialect for my latest pet project, and it seems this is just what the doctor ordered.</p>
<ul>
<li>It&#8217;s cross-platform (Unixoid systems and Windows)</li>
<li>Builds out of the box on Mac OS X, even on my old G3</li>
<li>Supports both hygienic and &#8220;dirty&#8221; macros</li>
<li>Comes with an object system</li>
<li>Comes with a bunch of libraries out of the box (like a HTTP library, which is one of the things I needed)</li>
<li>Works with SLIB; in fact, if SLIB is already installed, it will find it and integrate it</li>
<li>Supports a large number of SRFIs</li>
</ul>
<p><a href="http://www.call-with-current-continuation.org/">Chicken</a> has most of this too, except it lacks Windows binaries, and it recently got rid of unhygienic macros. Libraries can be installed as eggs, of course, so it might not need SLIB.</p>
<p>Anyway, said &#8220;pet project&#8221; involves making HTTP GET calls, and requires a powerful object system. (More about this later, if it ever becomes usable.) I wanted to use a Lisp/Scheme dialect for flexibility, and I wanted it to be cross-platform if at all possible, so users can run it on Windows as well. It turned out that it was remarkably hard to find a Scheme that matched all these requirements. I will not go into all the problems that I encountered, but suffice to say that Gambit, Scheme48, PLT and Petite Chez Scheme all had their own issues. (That is not to say that I won&#8217;t use them for other projects&#8230;)</p>
<p>That said, I might still change my mind and use Common Lisp instead&#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/943/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Hmm&#8230;</title>
		<link>http://4.flowsnake.org/archives/939</link>
		<comments>http://4.flowsnake.org/archives/939#comments</comments>
		<pubDate>Sun, 21 Mar 2010 16:42:31 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[sicp]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=939</guid>
		<description><![CDATA[When checking out recent Lisp books, I realized that one of the reasons that makes SICP palatable is the fact that it&#8217;s &#8220;old&#8221;. I mean that in a good way. It predates Java, Python, Ruby, etc, and as a result, it does not adopt a smug attitude like, &#8220;Lisp is so much better than all [...]]]></description>
			<content:encoded><![CDATA[<p>When checking out recent Lisp books, I realized that one of the reasons that makes <a href="http://mitpress.mit.edu/sicp/">SICP</a> palatable is the fact that it&#8217;s &#8220;old&#8221;. I mean that in a good way. It predates Java, Python, Ruby, etc, and as a result, it does not adopt a smug attitude like, &#8220;Lisp is so much better than all these imitators that stole features from it but lack the essence&#8221;. Modern Lisp texts often seem to have a hard time keeping this attitude at bay, which makes for unpleasant reading when you&#8217;re coming from a different language (which is almost always the case).</p>
<p>Then again, from what I have seen, this attitude is less prevalent in the Scheme community&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/939/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>dollop grows continuations&#8230;</title>
		<link>http://4.flowsnake.org/archives/630</link>
		<comments>http://4.flowsnake.org/archives/630#comments</comments>
		<pubDate>Wed, 17 Jun 2009 02:03:39 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[continuations]]></category>
		<category><![CDATA[dollop]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=630</guid>
		<description><![CDATA[Re: dollop&#8230; Continuations now work&#8230; or at least a subset of them. This works, for example: &#62; (+ 1 (call/cc (lambda (k) (+ 3 (k 2))))) =&#62; 3 Continuations are hairy like Fuzzyman. ;-) So if you don&#8217;t understand the example above, don&#8217;t worry, they take a while to wrap your head around. Someday I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Re: <a href="http://projects.flowsnake.org/dollop.html">dollop</a>&#8230; Continuations now work&#8230; or at least a subset of them. This works, for example:</p>
<pre>&gt; (+ 1 (call/cc (lambda (k) (+ 3 (k 2)))))
=&gt; 3</pre>
<p>Continuations are hairy like <a href="http://www.voidspace.org.uk/python/weblog/arch_d7_2009_06_13.shtml#e1098">Fuzzyman</a>. ;-) So if you don&#8217;t understand the example above, don&#8217;t worry, they take a while to wrap your head around. Someday I&#8217;ll write a &#8220;continuations in 60 seconds&#8221; post (or maybe a bit more time will be needed :-); until then, <a href="http://sanjaypande.blogspot.com/2004/06/understanding-scheme-continuations.html">this explanation</a> might help.</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/630/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heist</title>
		<link>http://4.flowsnake.org/archives/625</link>
		<comments>http://4.flowsnake.org/archives/625#comments</comments>
		<pubDate>Tue, 16 Jun 2009 01:44:23 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=625</guid>
		<description><![CDATA[Yesterday I stumbled upon this: Heist, a Scheme interpreter in Ruby. It looks pretty good; it&#8217;s certainly more advanced than my attempt at a Scheme interpreter in Python (which is, in turn, more advanced than Psyche, and will be released eventually, once I backport some of the dollop code to it). Apparently it supports (among [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I stumbled upon this: <a href="http://github.com/jcoglan/heist/tree/master">Heist</a>, a Scheme interpreter in Ruby.</p>
<p>It looks pretty good; it&#8217;s certainly more advanced than my attempt at a Scheme interpreter in Python (which is, in turn, more advanced than <a href="http://www.xs4all.nl/~yduppen/site/psyche.html">Psyche</a>, and will be released eventually, once I backport some of the <a href="/archives/602">dollop</a> code to it). Apparently it supports (among other things) hygienic macros and continuations, features that haven&#8217;t yet made it into my interpreter.</p>
<p>On a side note, it&#8217;s interesting to see how different the Ruby code looks compared to Python code. Five years ago I would have said (and did say :-) that Python and Ruby are much more alike than unalike. They still are, but they surely encourage (and discourage) different programming practices and idioms.</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/625/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A dollop of Lisp</title>
		<link>http://4.flowsnake.org/archives/602</link>
		<comments>http://4.flowsnake.org/archives/602#comments</comments>
		<pubDate>Sun, 14 Jun 2009 20:38:22 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dollop]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python-3.0]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=602</guid>
		<description><![CDATA[I&#8217;ve written a few (toy) Lisp interpreters over the years. Who hasn&#8217;t right? :-) At the core of such interpreters, there&#8217;s the eval-apply cycle. It basically works like this: To evaluate an expression, call eval on it. If the expression is atomic, this is just a matter of a simple name lookup, or the expression [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written a few (toy) Lisp interpreters over the years. Who hasn&#8217;t right? :-) At the core of such interpreters, there&#8217;s the <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1.1">eval-apply cycle</a>. It basically works like this:</p>
<ul>
<li>To evaluate an expression, call <em>eval</em> on it.</li>
<li>If the expression is atomic, this is just a matter of a simple name lookup, or the expression evaluates to itself (in the case of literals).</li>
<li>If the expression is composite (i.e. a list), it is considered to be a function call, where the first element of the list is a function, and the other elements are the arguments passed to that function. We evaluate all of these elements (again by calling <em>eval</em> on them), then call <em>apply</em> to do the actual function application.</li>
<li>If said function is built-in, we just call it, get a result back, and be done. If it&#8217;s a user-defined function, then we need to evaluate the expressions in that function&#8217;s body, using the procedure described here.</li>
</ul>
<p>This is a simplified version &#8212; it doesn&#8217;t take into account special forms or macros, for example &#8212; but it does capture the essence of the eval-apply cycle.</p>
<p>Anyway, since expressions can be nested arbitrarily deep, it should be clear that <em>eval</em> and <em>apply</em> can and often do call themselves and each other.</p>
<p>Now, when writing a Scheme interpreter in a language like Python, it is tempting to use a straightforward translation of this principle. You write functions (or methods, if you wish) <em>eval()</em> and <em>apply()</em>, which may call themselves and each other. This works rather well &#8212; until you blow the stack. The implementation language&#8217;s stack, that is&#8230; because every call to <em>eval</em> or <em>apply</em> in the Scheme interpreter, also uses the implementation language&#8217;s call stack.</p>
<p>This is a problem, especially in Scheme, which relies on tail recursion to define &#8220;iterative&#8221; processes. (These still use recursion, but because of tail call optimization, they operate in constant stack space. See <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.1">SICP 1.2.1</a>.)</p>
<p>We can simulate tail recursion by using exceptions (as demonstrated by <a href="http://code.activestate.com/recipes/474088/">this Cookbook recipe</a>, for example). This is the approach I followed in most of my projects. While it does work, sooner or later you&#8217;ll run into other problems, because the interpreter is still piggybacking on Python&#8217;s call stack, rather than having one of its own. So, implementing <a href="http://en.wikipedia.org/wiki/Continuation">continuations</a>, for example, becomes very difficult, as the notion of &#8220;the calling expression&#8221; is implicit.</p>
<p>So, I decided to use a different approach. And now we&#8217;re finally getting to the point of this blog post. :-)</p>
<p>This time I started with a call stack. The expression we want to evaluate is pushed onto it. For example,</p>
<pre>(+ 1 a)</pre>
<p>Then, I wrote a method <em>run()</em> which does one &#8220;evaluation step&#8221; using this call stack. If it&#8217;s done evaluating, it returns the result value, otherwise it returns None, as an indication that there&#8217;s still more work to do. (So, in order to evaluate an expression, you call it multiple times until you get a result back.)</p>
<p>How does such an evaluation step work? We take the topmost expression on the call stack, and start evaluating it. In this case, it&#8217;s a composite expression, so we just start at the beginning. We want to evaluate the symbol +. To do so, we push + onto the stack, and put a placeholder in its original position, indicated by &#8220;$$&#8221;.</p>
<pre>;; call stack now looks like:
($$ 1 a) +</pre>
<p>We&#8217;re now done with this step. In the next step, we again look at the topmost expression on the stack. It&#8217;s a symbol; we look it up, get a function back (represented by <em>&lt;lambda:+&gt;</em>, and stick it back into the original expression. We then move on to the next element of the list, which is 1, and push it.</p>
<pre>(&lt;lambda:+&gt; $$ a) 1</pre>
<p>Another step, and we get:</p>
<pre>(&lt;lambda:+&gt; 1 $$) a</pre>
<p>Let&#8217;s say the variable <em>a</em> has been defined and its value is 4. We then get:</p>
<pre>(&lt;lambda:+&gt; 1 4)</pre>
<p>Now we&#8217;re done evaluating the elements of this expression, and we can do the actual function application. Finally, we get the result 5.</p>
<p>This gets more complex when we use nested expressions, but the principle is the same.</p>
<pre>(+ (* a (- c d)))
($$ (* a (- c d))) +
(&lt;lambda:+&gt; $$) (* a (- c d))
(&lt;lambda:+&gt; $$) ($$ a (- c d)) *
(&lt;lambda:+&gt; $$) (&lt;lambda:*&gt; $$ (- c d)) a
(&lt;lambda:+&gt; $$) (&lt;lambda:*&gt; 4 $$) (- c d)
;; ...etc...</pre>
<p>It becomes more interesting when we introduce special forms into the mix. But since we have an explicit call stack now, we can clearly see what is going on with it, and tail recursion starts making much more sense. For example, if our topmost expression is</p>
<pre>(if condition (do-this) (do-that))</pre>
<p>and during evaluation we determine that <em>condition</em> evaluates to true, we can at that point replace the whole expression by</p>
<pre>(do-this)</pre>
<p>rather than having to push <em>(do-this)</em> and then sticking the result back into the <em>if</em> expression. Ditto for the last expression inside a <em>begin</em> block, <a href="http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-6.html#%_idx_80">and so on</a>.</p>
<p>The special forms require a bit of hackery, since we don&#8217;t evaluate all of their arguments&#8230; but there&#8217;s only a few of them.</p>
<p>The proof-of-concept implementation that uses this concept is called <a href="http://projects.flowsnake.org/dollop.html">dollop</a> and is available at <a href="http://github.com/zephyrfalcon/dollop/tree/master">github</a>. (Requires Python 3.0.) The name is because it&#8217;s only a &#8220;dollop of Lisp&#8221; (or rather, Scheme); it only supports a few special forms (<em>begin</em>, <em>define</em>, <em>if</em>, <em>lambda</em>), and a few functions for example programs (+, -, *, =, <em>list</em>). It cuts corners in other ways as well, as my goal was to get a working proof-of-concept out, not to write a complete Scheme interpreter.</p>
<p>Anyway, comments, bug fixes, improvements, etc, welcome.</p>
<p>(I will also release two other Lisp-y interpreters, but those will get blog posts and project pages of their own&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/602/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>^_^</title>
		<link>http://4.flowsnake.org/archives/538</link>
		<comments>http://4.flowsnake.org/archives/538#comments</comments>
		<pubDate>Wed, 18 Feb 2009 14:13:07 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=538</guid>
		<description><![CDATA[As seen in the list of registered voters for the R*RS Steering Committee: Name: Hal Abelson [...] The voter indicated that he would like to submit the first chapter of Structure and Interpretation of Computer Programs as his statement. The Steering Committee agrees that this does fulfill the requirement, given that the voter did write [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.r6rs.org/steering-committee/election/electorate.html#X53">As seen</a> in the <a href="http://www.r6rs.org/steering-committee/election/electorate.html">list of registered voters</a> for the<a href="http://www.r6rs.org/steering-committee/election/electorate.html"> </a><a href="http://www.r6rs.org/steering-committee/">R*RS Steering Committee</a>:</p>
<blockquote><p><a name="X53">Name: Hal Abelson<br />
</a>[...]</p>
<p>The voter indicated that he would like to submit the first chapter of <cite>Structure and Interpretation of Computer Programs</cite> as his statement.  The Steering Committee agrees that this does fulfill the requirement, given that the voter did write it, and it is more that 75 words long.  Unfortunately we don&#8217;t have the space to reproduce it here, but it can be found online at <a href="http://mitpress.mit.edu/sicp/">http://mitpress.mit.edu/sicp/</a>.</p></blockquote>
<p>(For non-Schemers: To register as a voter, people must submit a statement indicating their interest in Scheme and the standardization process. Most people&#8217;s submissions look like, &#8220;I have been using Scheme for X years blah blah blah&#8230;&#8221; I guess if you wrote SICP, you can afford to do it differently. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/538/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random thought</title>
		<link>http://4.flowsnake.org/archives/385</link>
		<comments>http://4.flowsnake.org/archives/385#comments</comments>
		<pubDate>Wed, 31 Dec 2008 13:21:23 +0000</pubDate>
		<dc:creator>Hans Nowak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://4.flowsnake.org/?p=385</guid>
		<description><![CDATA[If I finish my Scheme interpreter (written in Python), and it comes out halfway decent, it would technically be possible to use Google App Engine with Scheme&#8230; *ponders*]]></description>
			<content:encoded><![CDATA[<p>If I finish my Scheme interpreter (written in Python), and it comes out halfway decent, it would technically be possible to use Google App Engine with Scheme&#8230;</p>
<p>*ponders*</p>
]]></content:encoded>
			<wfw:commentRss>http://4.flowsnake.org/archives/385/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

