<?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 on: Improving Lisp Syntax Is Harder Than It Looks</title>
	<atom:link href="http://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/feed/" rel="self" type="application/rss+xml" />
	<link>http://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/</link>
	<description>Thoughts on Scheme and teaching Scheme</description>
	<pubDate>Thu, 24 Jul 2008 02:06:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Mikalai Birukou</title>
		<link>http://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/#comment-44</link>
		<dc:creator>Mikalai Birukou</dc:creator>
		<pubDate>Mon, 17 Apr 2006 18:16:01 +0000</pubDate>
		<guid isPermaLink="false">https://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/#comment-44</guid>
		<description>In reply to
"""
Another disadvantage to this change of syntax is that it makes functional programming much more odd looking. Lets say you have a list containing functions and you want to call the first one. In Scheme you write ((car lst) params) and in Common Lisp (funcall (car lst) params). However in our new syntax it looks like: car(lst)(params) and funcall(car(lst) (params)). Neither of these is very elegant, and it only gets worse if that call in turn returns a function, which would look like: car(lst)(params)(params2) and funcall(funcall(car(lst) (params)) (params2)).
"""

Want to give TwinLisp version of (funcall (car lst) params). Here it is:

lst.car().funcall(params)

and with further funcall, if the first one returns a function:

lst.car().funcall(params).funcall(params2)

TwinLisp gives flexibility (choice) to write the same thing almost as you showed it above:
funcall(funcall(car(lst),params),params2)</description>
		<content:encoded><![CDATA[<p>In reply to<br />
&#8220;&#8221;"<br />
Another disadvantage to this change of syntax is that it makes functional programming much more odd looking. Lets say you have a list containing functions and you want to call the first one. In Scheme you write ((car lst) params) and in Common Lisp (funcall (car lst) params). However in our new syntax it looks like: car(lst)(params) and funcall(car(lst) (params)). Neither of these is very elegant, and it only gets worse if that call in turn returns a function, which would look like: car(lst)(params)(params2) and funcall(funcall(car(lst) (params)) (params2)).<br />
&#8220;&#8221;"</p>
<p>Want to give TwinLisp version of (funcall (car lst) params). Here it is:</p>
<p>lst.car().funcall(params)</p>
<p>and with further funcall, if the first one returns a function:</p>
<p>lst.car().funcall(params).funcall(params2)</p>
<p>TwinLisp gives flexibility (choice) to write the same thing almost as you showed it above:<br />
funcall(funcall(car(lst),params),params2)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mikalai Birukou</title>
		<link>http://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/#comment-43</link>
		<dc:creator>Mikalai Birukou</dc:creator>
		<pubDate>Mon, 17 Apr 2006 17:33:06 +0000</pubDate>
		<guid isPermaLink="false">https://pschombe.wordpress.com/2006/03/17/improving-lisp-syntax-is-harder-than-it-looks/#comment-43</guid>
		<description>I cannot agree with the following:
"""
One could try to get around this by altering the quasiquote operator, as in TwinLisp, so that the expansion becomes `display("text"), but then we have sacrificed the simplicity of the quasiquote, which no longer operates on lists.
"""

Quoting works in TwinLisp just like it in lisp. Let's do an example with a backquote:

$ tlisp
TwinLisp interpreter.
Typing "Ctrl-D" or "exit" quits interpreter.
&#62;&#62;&#62; a=1

1
&#62;&#62;&#62; `~(a,b,$a)

(A B 1)
&#62;&#62;&#62;

So, quotes act on lists *exactly* like in lisp, because all expansions of quotes are performed by lisp itself (CLisp in our example). It amazes me how much of lisp can be left the same while introducing a syntax.</description>
		<content:encoded><![CDATA[<p>I cannot agree with the following:<br />
&#8220;&#8221;"<br />
One could try to get around this by altering the quasiquote operator, as in TwinLisp, so that the expansion becomes `display(&#8221;text&#8221;), but then we have sacrificed the simplicity of the quasiquote, which no longer operates on lists.<br />
&#8220;&#8221;"</p>
<p>Quoting works in TwinLisp just like it in lisp. Let&#8217;s do an example with a backquote:</p>
<p>$ tlisp<br />
TwinLisp interpreter.<br />
Typing &#8220;Ctrl-D&#8221; or &#8220;exit&#8221; quits interpreter.<br />
&gt;&gt;&gt; a=1</p>
<p>1<br />
&gt;&gt;&gt; `~(a,b,$a)</p>
<p>(A B 1)<br />
&gt;&gt;&gt;</p>
<p>So, quotes act on lists *exactly* like in lisp, because all expansions of quotes are performed by lisp itself (CLisp in our example). It amazes me how much of lisp can be left the same while introducing a syntax.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
