<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: The Problem with Scripting Language REPLs</title>
	<atom:link href="http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/feed/" rel="self" type="application/rss+xml" />
	<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/</link>
	<description>Leveraging Perl and Emacs</description>
	<lastBuildDate>Sat, 15 Jun 2013 02:12:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Paddy3118</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8786</link>
		<dc:creator><![CDATA[Paddy3118]]></dc:creator>
		<pubDate>Thu, 20 Jan 2011 20:10:18 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8786</guid>
		<description><![CDATA[I believe Ipython allows text to be edited in an editor and then submitted/re-submitted.
I tend to use a combination of vim, Idle, and the command line python in development.]]></description>
		<content:encoded><![CDATA[<p>I believe Ipython allows text to be edited in an editor and then submitted/re-submitted.<br />
I tend to use a combination of vim, Idle, and the command line python in development.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bzero</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8779</link>
		<dc:creator><![CDATA[Bzero]]></dc:creator>
		<pubDate>Sun, 16 Jan 2011 13:46:08 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8779</guid>
		<description><![CDATA[Look at Stylish Perl REPL for Emacs: http://www.youtube.com/watch?v=n9FLy-rlP14

I think it&#039;s the best REPL for Emacs now. But... it&#039;s so hard to install - SEE FULL DESCRIPTION of youtube movie. And author brake it, so only old versions of Stylish work.

I used Stylish. It&#039;s better than using re.pl from shell!

Sepia and PDE REPLs are a bit poor instead of Stylish...]]></description>
		<content:encoded><![CDATA[<p>Look at Stylish Perl REPL for Emacs: <a href="http://www.youtube.com/watch?v=n9FLy-rlP14" rel="nofollow">http://www.youtube.com/watch?v=n9FLy-rlP14</a></p>
<p>I think it&#8217;s the best REPL for Emacs now. But&#8230; it&#8217;s so hard to install &#8211; SEE FULL DESCRIPTION of youtube movie. And author brake it, so only old versions of Stylish work.</p>
<p>I used Stylish. It&#8217;s better than using re.pl from shell!</p>
<p>Sepia and PDE REPLs are a bit poor instead of Stylish&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Kennedy</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8773</link>
		<dc:creator><![CDATA[Adam Kennedy]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 12:05:44 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8773</guid>
		<description><![CDATA[Perl::Shell does not execute a line at a time, although it does a statement at a time.

At the end of each line, it parses the input with PPI to see if the currently entered material represents a definitely terminated statement. If it doesn&#039;t, then it won&#039;t evaluate.

To delay for arbitrary code, just wrap it in a scope...

SCOPE: {
    my $foo = &quot;Hello World!\n&quot;;
    print $foo;
}
(executes here)

It doesn&#039;t, however, support backing up. But you could probably add that feature if you wanted...]]></description>
		<content:encoded><![CDATA[<p>Perl::Shell does not execute a line at a time, although it does a statement at a time.</p>
<p>At the end of each line, it parses the input with PPI to see if the currently entered material represents a definitely terminated statement. If it doesn&#8217;t, then it won&#8217;t evaluate.</p>
<p>To delay for arbitrary code, just wrap it in a scope&#8230;</p>
<p>SCOPE: {<br />
    my $foo = &#8220;Hello World!\n&#8221;;<br />
    print $foo;<br />
}<br />
(executes here)</p>
<p>It doesn&#8217;t, however, support backing up. But you could probably add that feature if you wanted&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: HS</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8772</link>
		<dc:creator><![CDATA[HS]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 10:11:45 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8772</guid>
		<description><![CDATA[@Jared: I&#039;m actually using PyCrust, which comes with wxPython, as my Pyhon REPL shell.  No need to use textual python shell when I have X Window system running.  PyCrust gives me completion and easy access to API documentation -- when I type &quot;(&quot; after a function name, it displays tooltip with the documentation string.  Two things I miss in Emacs (or to be more precise, in python-mode + ECB (CEDET)).

Also I&#039;ve just find out that, in Emacs&#039; python-shell, if you press C-j instead of  a newline is entered but the edited line is not evaluated/executed -- you can continue editing next line.  It does not work in textual interface though.]]></description>
		<content:encoded><![CDATA[<p>@Jared: I&#8217;m actually using PyCrust, which comes with wxPython, as my Pyhon REPL shell.  No need to use textual python shell when I have X Window system running.  PyCrust gives me completion and easy access to API documentation &#8212; when I type &#8220;(&#8221; after a function name, it displays tooltip with the documentation string.  Two things I miss in Emacs (or to be more precise, in python-mode + ECB (CEDET)).</p>
<p>Also I&#8217;ve just find out that, in Emacs&#8217; python-shell, if you press C-j instead of  a newline is entered but the edited line is not evaluated/executed &#8212; you can continue editing next line.  It does not work in textual interface though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jared</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8771</link>
		<dc:creator><![CDATA[Jared]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 07:52:23 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8771</guid>
		<description><![CDATA[Thanks]]></description>
		<content:encoded><![CDATA[<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Eure</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8770</link>
		<dc:creator><![CDATA[Ian Eure]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 07:46:14 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8770</guid>
		<description><![CDATA[Cool story, bro.]]></description>
		<content:encoded><![CDATA[<p>Cool story, bro.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jared</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8769</link>
		<dc:creator><![CDATA[Jared]]></dc:creator>
		<pubDate>Fri, 14 Jan 2011 07:42:34 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8769</guid>
		<description><![CDATA[You know what Ian, whenever we chat, I get the impression that you&#039;re trying hard to appear a lot cleverer than you actually are.  And that the reputation that precedes you is entirely undeserved.

So, to your points... your argument hinged on the &quot;misuse&quot; of the word execution?  

http://www.thefreedictionary.com/execute

1. To put into effect; carry out
7. &lt;em&gt;Computer Science&lt;/em&gt; To run (a program or an instruction).

So, I&#039;m executing my eval instruction.  Whatever.  I didn&#039;t answer this point previously because I thought it was irrelevant.  I still do.  Feel free to disagree.  I changed the word execution to evaluation because it confused you.  And only you it seems.

If I&#039;ve violated some unwritten etiquette rule here by not writing all over the place &quot;Updated to avoid confusing Ian&quot;, well, I&#039;m not sorry about that.  You can feel free to whine down here in the comments section.  Or quote the original on your blog and pick holes in it to your hearts content.

If we&#039;re arguing over semantics, I didn&#039;t &quot;argue&quot; that Emacs is a REPL.  I stated (somewhat incorrectly, I agree - that&#039;s why I put &lt;em&gt;kinda&lt;/em&gt;) that it was one.
Where is the argument?

Trying to strengthen your point by saying &quot;absurd and contradictory&quot; makes you look ridiculous.  I think you meant &quot;wrong&quot; or &quot;incorrect&quot;.  What am I contradicting?

And you&#039;re wrong about C-M-x.  When I press C-M-x, it reads, it evals, it prints (to *messages*) and it returns to the main emacs loop.

Regards]]></description>
		<content:encoded><![CDATA[<p>You know what Ian, whenever we chat, I get the impression that you&#8217;re trying hard to appear a lot cleverer than you actually are.  And that the reputation that precedes you is entirely undeserved.</p>
<p>So, to your points&#8230; your argument hinged on the &#8220;misuse&#8221; of the word execution?  </p>
<p><a href="http://www.thefreedictionary.com/execute" rel="nofollow">http://www.thefreedictionary.com/execute</a></p>
<p>1. To put into effect; carry out<br />
7. <em>Computer Science</em> To run (a program or an instruction).</p>
<p>So, I&#8217;m executing my eval instruction.  Whatever.  I didn&#8217;t answer this point previously because I thought it was irrelevant.  I still do.  Feel free to disagree.  I changed the word execution to evaluation because it confused you.  And only you it seems.</p>
<p>If I&#8217;ve violated some unwritten etiquette rule here by not writing all over the place &#8220;Updated to avoid confusing Ian&#8221;, well, I&#8217;m not sorry about that.  You can feel free to whine down here in the comments section.  Or quote the original on your blog and pick holes in it to your hearts content.</p>
<p>If we&#8217;re arguing over semantics, I didn&#8217;t &#8220;argue&#8221; that Emacs is a REPL.  I stated (somewhat incorrectly, I agree &#8211; that&#8217;s why I put <em>kinda</em>) that it was one.<br />
Where is the argument?</p>
<p>Trying to strengthen your point by saying &#8220;absurd and contradictory&#8221; makes you look ridiculous.  I think you meant &#8220;wrong&#8221; or &#8220;incorrect&#8221;.  What am I contradicting?</p>
<p>And you&#8217;re wrong about C-M-x.  When I press C-M-x, it reads, it evals, it prints (to *messages*) and it returns to the main emacs loop.</p>
<p>Regards</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Eure</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8768</link>
		<dc:creator><![CDATA[Ian Eure]]></dc:creator>
		<pubDate>Thu, 13 Jan 2011 22:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8768</guid>
		<description><![CDATA[Real nice of you to criticize the non-substantive portions of my response, then silently edit your post to remove your abject failure to distinguish execution and evaluation, upon which the majority of my point hinged.

Your argument that Emacs is a REPL is absurd and contradictory (though Emacs does have REPLs and interfaces to REPLs).
Editing elisp in a buffer and hitting C-M-x to eval it isn&#039;t a REPL, because, uh, the definition of a REPL is that  it reads, evals, prints, and loops.

What you have there is a plain old edit-compile-debug cycle, it&#039;s just that the same software does all of it for you.]]></description>
		<content:encoded><![CDATA[<p>Real nice of you to criticize the non-substantive portions of my response, then silently edit your post to remove your abject failure to distinguish execution and evaluation, upon which the majority of my point hinged.</p>
<p>Your argument that Emacs is a REPL is absurd and contradictory (though Emacs does have REPLs and interfaces to REPLs).<br />
Editing elisp in a buffer and hitting C-M-x to eval it isn&#8217;t a REPL, because, uh, the definition of a REPL is that  it reads, evals, prints, and loops.</p>
<p>What you have there is a plain old edit-compile-debug cycle, it&#8217;s just that the same software does all of it for you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jared</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8767</link>
		<dc:creator><![CDATA[Jared]]></dc:creator>
		<pubDate>Thu, 13 Jan 2011 21:10:35 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8767</guid>
		<description><![CDATA[@Caleb - this might be because of your experience with the command line REPLs.  A good REPL, such as Emacs provides for Emacs Lisp is fairly nice to use.

@HS - yes, as you noticed, I&#039;m talking about the base command-line functionality of python, irb and various Perl alternatives here.  Devel::REPL and the textual python shell have the same issue in that you have to evaluate a line at a time.

I&#039;ll need to do a straw poll of the pythonistas I know to see what proportion of them use IDLE or an alternative improved REPL.

@Ian - the answer is (c) - you&#039;re misunderstanding what I&#039;m saying.  To be fair, that is partially my fault, I didn&#039;t explicitly state I was talking about the command line REPLs and not a REPL running as an inferior process.

But I am surprised it wasn&#039;t obvious to you as an emacser though from &quot;Integrating [Devel::REPL] with Emacs comint will probably alleviate a lot of that pain.&quot;  I guess you didn&#039;t read the whole post before replying.

Your misunderstanding also comes from the fact you haven&#039;t used Devel::REPL.  It _is_ possible to redefine subroutines (that is why I said painful, and not impossible).  But redefining them a line at a time is painful.

Demonstrating defining one line functions in a REPL is not convincing.

I have used python a long time ago.  It was okay, but for various reasons I am glad I am now able to use perl instead.]]></description>
		<content:encoded><![CDATA[<p>@Caleb &#8211; this might be because of your experience with the command line REPLs.  A good REPL, such as Emacs provides for Emacs Lisp is fairly nice to use.</p>
<p>@HS &#8211; yes, as you noticed, I&#8217;m talking about the base command-line functionality of python, irb and various Perl alternatives here.  Devel::REPL and the textual python shell have the same issue in that you have to evaluate a line at a time.</p>
<p>I&#8217;ll need to do a straw poll of the pythonistas I know to see what proportion of them use IDLE or an alternative improved REPL.</p>
<p>@Ian &#8211; the answer is (c) &#8211; you&#8217;re misunderstanding what I&#8217;m saying.  To be fair, that is partially my fault, I didn&#8217;t explicitly state I was talking about the command line REPLs and not a REPL running as an inferior process.</p>
<p>But I am surprised it wasn&#8217;t obvious to you as an emacser though from &#8220;Integrating [Devel::REPL] with Emacs comint will probably alleviate a lot of that pain.&#8221;  I guess you didn&#8217;t read the whole post before replying.</p>
<p>Your misunderstanding also comes from the fact you haven&#8217;t used Devel::REPL.  It _is_ possible to redefine subroutines (that is why I said painful, and not impossible).  But redefining them a line at a time is painful.</p>
<p>Demonstrating defining one line functions in a REPL is not convincing.</p>
<p>I have used python a long time ago.  It was okay, but for various reasons I am glad I am now able to use perl instead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Eure</title>
		<link>http://curiousprogrammer.wordpress.com/2011/01/13/the-problem-with-scripting-language-repls/#comment-8764</link>
		<dc:creator><![CDATA[Ian Eure]]></dc:creator>
		<pubDate>Thu, 13 Jan 2011 18:13:17 +0000</pubDate>
		<guid isPermaLink="false">http://curiousprogrammer.wordpress.com/?p=1468#comment-8764</guid>
		<description><![CDATA[I can&#039;t speak to Perl, but it sounds like you&#039;re experiencing one problem with Devel::REPL (&quot;once I have pressed enter, changing my mind is painful.&quot;) then a) misunderstanding the difference between evaluation and execution; and/or b) making an inappropriate generalization to other tools and languages.

In Python&#039;s standard REPL, you can absolutely redefine any function you input. If you&#039;re using Emacs&#039; standard inferior-python-mode, you can edit your definitions in a python-mode buffer and send them to your REPL with a keybinding. Changing a function&#039;s definition is as easy as hitting C-M-x again.

Additionally, if you kill/yank your code into the REPL, the standard M-p and M-n bindings bring back the entire input, not one line at  time.

At no point is anything executed unless you request it. That is, if you send:

def foo(): return &quot;foo&quot;

The result is nothing; the function evaluated and bound to your local namespace. But if you send:

foo()

Then you get back &quot;foo&quot; — the function is executed.

Again, I can&#039;t say how Emacs&#039; Perl stuff handles this. But having worked with a few different modes that use inferior processes for REPLs (Python, SQL, and Clojure at least), this is very standard behavior for inferior modes in Emacs.]]></description>
		<content:encoded><![CDATA[<p>I can&#8217;t speak to Perl, but it sounds like you&#8217;re experiencing one problem with Devel::REPL (&#8220;once I have pressed enter, changing my mind is painful.&#8221;) then a) misunderstanding the difference between evaluation and execution; and/or b) making an inappropriate generalization to other tools and languages.</p>
<p>In Python&#8217;s standard REPL, you can absolutely redefine any function you input. If you&#8217;re using Emacs&#8217; standard inferior-python-mode, you can edit your definitions in a python-mode buffer and send them to your REPL with a keybinding. Changing a function&#8217;s definition is as easy as hitting C-M-x again.</p>
<p>Additionally, if you kill/yank your code into the REPL, the standard M-p and M-n bindings bring back the entire input, not one line at  time.</p>
<p>At no point is anything executed unless you request it. That is, if you send:</p>
<p>def foo(): return &#8220;foo&#8221;</p>
<p>The result is nothing; the function evaluated and bound to your local namespace. But if you send:</p>
<p>foo()</p>
<p>Then you get back &#8220;foo&#8221; — the function is executed.</p>
<p>Again, I can&#8217;t say how Emacs&#8217; Perl stuff handles this. But having worked with a few different modes that use inferior processes for REPLs (Python, SQL, and Clojure at least), this is very standard behavior for inferior modes in Emacs.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
