<?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"
	>
<channel>
	<title>Comments for Halfbaked Ideas</title>
	<atom:link href="http://erl.nfshost.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://erl.nfshost.com</link>
	<description></description>
	<pubDate>Tue, 02 Dec 2008 03:01:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>Comment on leopard vs glow worm by drc</title>
		<link>http://erl.nfshost.com/2007/11/21/leopard-vs-glow-worm/#comment-255</link>
		<dc:creator>drc</dc:creator>
		<pubDate>Thu, 06 Nov 2008 11:56:04 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/2007/11/21/leopard-vs-glow-worm/#comment-255</guid>
		<description>Evidently some people missed that warning.</description>
		<content:encoded><![CDATA[<p>Evidently some people missed that warning.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on leopard vs glow worm by Kaleo</title>
		<link>http://erl.nfshost.com/2007/11/21/leopard-vs-glow-worm/#comment-253</link>
		<dc:creator>Kaleo</dc:creator>
		<pubDate>Wed, 05 Nov 2008 18:51:33 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/2007/11/21/leopard-vs-glow-worm/#comment-253</guid>
		<description>The developer clearly states that GlowWorm does NOT work with Leopard.

BTW, the same problem can occur with Little Snitch if you use AppleJack. Some errant kext file will kill your system.

Also, Apple advises against using Application Enhancer for the same startup reason.</description>
		<content:encoded><![CDATA[<p>The developer clearly states that GlowWorm does NOT work with Leopard.</p>
<p>BTW, the same problem can occur with Little Snitch if you use AppleJack. Some errant kext file will kill your system.</p>
<p>Also, Apple advises against using Application Enhancer for the same startup reason.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on leo font rendering woes by drc</title>
		<link>http://erl.nfshost.com/2008/09/04/leo-font-rendering-woes/#comment-250</link>
		<dc:creator>drc</dc:creator>
		<pubDate>Fri, 17 Oct 2008 13:22:46 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/2008/09/04/leo-font-rendering-woes/#comment-250</guid>
		<description>Sure, you can change fonts, but I want antialiased fonts, not Terminus.  I have since managed to get them, as explained &lt;a href="http://erl.nfshost.com/2008/10/11/installing-antialiased-leo-on-ubuntu/" rel="nofollow"&gt;here&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Sure, you can change fonts, but I want antialiased fonts, not Terminus.  I have since managed to get them, as explained <a href="http://erl.nfshost.com/2008/10/11/installing-antialiased-leo-on-ubuntu/" rel="nofollow">here</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on leo font rendering woes by guest</title>
		<link>http://erl.nfshost.com/2008/09/04/leo-font-rendering-woes/#comment-249</link>
		<dc:creator>guest</dc:creator>
		<pubDate>Fri, 17 Oct 2008 08:05:56 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/2008/09/04/leo-font-rendering-woes/#comment-249</guid>
		<description>(a) you cannot go into Leo congiruration and change font settings?!
(b) and/or install a font like "Terminus" or some other that does NOT NEED antialiasing because it's one pixel wide and looks very clean. Then set it for you main font and font on buttons etc. inside Leo configuration.</description>
		<content:encoded><![CDATA[<p>(a) you cannot go into Leo congiruration and change font settings?!<br />
(b) and/or install a font like &#8220;Terminus&#8221; or some other that does NOT NEED antialiasing because it&#8217;s one pixel wide and looks very clean. Then set it for you main font and font on buttons etc. inside Leo configuration.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Installing antialiased Leo on Ubuntu by drc</title>
		<link>http://erl.nfshost.com/2008/10/11/installing-antialiased-leo-on-ubuntu/#comment-243</link>
		<dc:creator>drc</dc:creator>
		<pubDate>Sun, 12 Oct 2008 21:02:04 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/?p=86#comment-243</guid>
		<description>Thanks for confirming my suspicion. 

The reason I installed python 2.6 was to support antialiased fonts in Leo. Other than that, I am a casual python user, and content to go with the version distributed with the OS.  I understand python 2.6 will be the default in Ubuntu in another six months or so, when Jaunty Jackelope is released.</description>
		<content:encoded><![CDATA[<p>Thanks for confirming my suspicion. </p>
<p>The reason I installed python 2.6 was to support antialiased fonts in Leo. Other than that, I am a casual python user, and content to go with the version distributed with the OS.  I understand python 2.6 will be the default in Ubuntu in another six months or so, when Jaunty Jackelope is released.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Installing antialiased Leo on Ubuntu by Terry</title>
		<link>http://erl.nfshost.com/2008/10/11/installing-antialiased-leo-on-ubuntu/#comment-242</link>
		<dc:creator>Terry</dc:creator>
		<pubDate>Sun, 12 Oct 2008 20:30:08 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/?p=86#comment-242</guid>
		<description>If you're going to do this I think using Python 2.6 so that Leo has its own python / Tkinter, as you have, is the way to go.  I've fiddle around getting the system python (2.5.2) / Tkinter to use Tk 8.5, and it's really not worth it.  Any python packages you want to use with a Tkinter dependency have to be recompiled, which is annoying.  In the end I tried taking short cuts which messed up the 2.5.2 python install, and that's really not something you want to do.  Your approach should be much safer.</description>
		<content:encoded><![CDATA[<p>If you&#8217;re going to do this I think using Python 2.6 so that Leo has its own python / Tkinter, as you have, is the way to go.  I&#8217;ve fiddle around getting the system python (2.5.2) / Tkinter to use Tk 8.5, and it&#8217;s really not worth it.  Any python packages you want to use with a Tkinter dependency have to be recompiled, which is annoying.  In the end I tried taking short cuts which messed up the 2.5.2 python install, and that&#8217;s really not something you want to do.  Your approach should be much safer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on leopard vs glow worm by Jonas Eriksson</title>
		<link>http://erl.nfshost.com/2007/11/21/leopard-vs-glow-worm/#comment-202</link>
		<dc:creator>Jonas Eriksson</dc:creator>
		<pubDate>Mon, 22 Sep 2008 18:19:25 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/2007/11/21/leopard-vs-glow-worm/#comment-202</guid>
		<description>Me too, I did the same mistake! Thanks for the help!</description>
		<content:encoded><![CDATA[<p>Me too, I did the same mistake! Thanks for the help!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on recursion in erlang by Raoul Duke</title>
		<link>http://erl.nfshost.com/2008/02/02/recursion-in-erlang/#comment-161</link>
		<dc:creator>Raoul Duke</dc:creator>
		<pubDate>Thu, 07 Aug 2008 21:22:39 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/2008/02/02/recursion-in-erlang/#comment-161</guid>
		<description>re: iteration vs. recursion

recursion in Erlang works hand in hand with single-assignment variables, no?</description>
		<content:encoded><![CDATA[<p>re: iteration vs. recursion</p>
<p>recursion in Erlang works hand in hand with single-assignment variables, no?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CDPATH vs make by Robert White</title>
		<link>http://erl.nfshost.com/2008/06/02/cdpath-vs-make/#comment-160</link>
		<dc:creator>Robert White</dc:creator>
		<pubDate>Mon, 04 Aug 2008 17:30:40 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/?p=58#comment-160</guid>
		<description>Well-defined behavior.  Just as PATH=... with no current directory will not search the current directory for command invocation candidates, a CDPATH without a ".' (current directory) entry will not search the current directory for candidate directory entries. There is an explicit equivalence that no CDPATH variable is interpreted as 'CDPATH=.' in any way that matters.

Without this explicit behavior, e.g. with an implicit search of the current directory, would it be less astonishing to search the current directory before, or after, the CDPATH?

There are a number of other reasons for this including keeping people from walking a directory tree in a restricted shell and such.

If you look in "man bash" you will see the sample value is '.:~:/usr', and I believe that in most cases checking the current directory first is the best behavior, it prevents masking of directory classes. For instance if you had 'CDPATH=/usr:.' and you were in /usr/local then 'cd bin' would take you to /usr/bin instead of the expected /usr/local/bin, and so on.</description>
		<content:encoded><![CDATA[<p>Well-defined behavior.  Just as PATH=&#8230; with no current directory will not search the current directory for command invocation candidates, a CDPATH without a &#8220;.&#8217; (current directory) entry will not search the current directory for candidate directory entries. There is an explicit equivalence that no CDPATH variable is interpreted as &#8216;CDPATH=.&#8217; in any way that matters.</p>
<p>Without this explicit behavior, e.g. with an implicit search of the current directory, would it be less astonishing to search the current directory before, or after, the CDPATH?</p>
<p>There are a number of other reasons for this including keeping people from walking a directory tree in a restricted shell and such.</p>
<p>If you look in &#8220;man bash&#8221; you will see the sample value is &#8216;.:~:/usr&#8217;, and I believe that in most cases checking the current directory first is the best behavior, it prevents masking of directory classes. For instance if you had &#8216;CDPATH=/usr:.&#8217; and you were in /usr/local then &#8216;cd bin&#8217; would take you to /usr/bin instead of the expected /usr/local/bin, and so on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on recursion in erlang by Robert White</title>
		<link>http://erl.nfshost.com/2008/02/02/recursion-in-erlang/#comment-159</link>
		<dc:creator>Robert White</dc:creator>
		<pubDate>Fri, 01 Aug 2008 21:09:25 +0000</pubDate>
		<guid isPermaLink="false">http://erl.nfshost.com/wordpress/2008/02/02/recursion-in-erlang/#comment-159</guid>
		<description>I wouldn't call that fully idiomatic of "good" recursion because it is not tail recursive, so a list of 100,000 elements would have a stack 100,000 function calls deep. The whole discussion of using another argument to flatten out recursion has to then ensue.

Note that this example is extemporaneous, so it may be buggy (I don't have erlang here to test this.  (Note that I use 'ok' and 'error' for example error checking as well)

[code]
% Empty lists are bad, there is no minimum to no-value/NULL
min([]) -&#62; {error, []};
% A simple identity operation for completeness
min({ok, X}) -&#62; {ok, X};
% A well defined entry point, e.g. the "normal" case
min([H&#124;T]) -&#62; min({ok, H},T).

% fixed point of recursion, list is empty, the answer is B
min({ok,B},[]) -&#62; {ok,B};
% the only test in the whole module, the guard selects the new minimum value here
min({ok,B},[H&#124;T]) when B &#62; H -&#62; min({ok,H},T);
% By default the old B is less than the head, so we don't care about it any more
min({ok,B},[_H&#124;T]) -&#62; min({ok,B},T).

% helper for doing "X = 5 * value(min(List))" and (drop 'ok' after check, return V)
value({ok,V}) -&#62; V.
[/code]

Note that since the very last call in every branch that recurses, a call to the recursion, the compiler is free to not save up intermediate values in a call stack they way it would have to in the case of smaller(H,min(T)) since in that case min is evaluated to return a value before smaller can be called [arguments evaluate first].

So we use matching _and_ guards as the mechanism to do recursion "right" where matching is primary, but guards disambiguate "identical" matches, so fn(X) is unambiguous where things like fn(X,Y) and another fn(X,Y) must rely on guarding.

As a general rule, you should: Match before Guard, Guard before Test-with-if/case.</description>
		<content:encoded><![CDATA[<p>I wouldn&#8217;t call that fully idiomatic of &#8220;good&#8221; recursion because it is not tail recursive, so a list of 100,000 elements would have a stack 100,000 function calls deep. The whole discussion of using another argument to flatten out recursion has to then ensue.</p>
<p>Note that this example is extemporaneous, so it may be buggy (I don&#8217;t have erlang here to test this.  (Note that I use &#8216;ok&#8217; and &#8216;error&#8217; for example error checking as well)</p>
<p>[code]<br />
% Empty lists are bad, there is no minimum to no-value/NULL<br />
min([]) -&gt; {error, []};<br />
% A simple identity operation for completeness<br />
min({ok, X}) -&gt; {ok, X};<br />
% A well defined entry point, e.g. the &#8220;normal&#8221; case<br />
min([H|T]) -&gt; min({ok, H},T).</p>
<p>% fixed point of recursion, list is empty, the answer is B<br />
min({ok,B},[]) -&gt; {ok,B};<br />
% the only test in the whole module, the guard selects the new minimum value here<br />
min({ok,B},[H|T]) when B &gt; H -&gt; min({ok,H},T);<br />
% By default the old B is less than the head, so we don&#8217;t care about it any more<br />
min({ok,B},[_H|T]) -&gt; min({ok,B},T).</p>
<p>% helper for doing &#8220;X = 5 * value(min(List))&#8221; and (drop &#8216;ok&#8217; after check, return V)<br />
value({ok,V}) -&gt; V.<br />
[/code]</p>
<p>Note that since the very last call in every branch that recurses, a call to the recursion, the compiler is free to not save up intermediate values in a call stack they way it would have to in the case of smaller(H,min(T)) since in that case min is evaluated to return a value before smaller can be called [arguments evaluate first].</p>
<p>So we use matching _and_ guards as the mechanism to do recursion &#8220;right&#8221; where matching is primary, but guards disambiguate &#8220;identical&#8221; matches, so fn(X) is unambiguous where things like fn(X,Y) and another fn(X,Y) must rely on guarding.</p>
<p>As a general rule, you should: Match before Guard, Guard before Test-with-if/case.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
