Very useful post I think. Not to depreciate Python the language, but it might be interesting to compare "adding a new statement to Python" with "adding a new statement to Lisp". Especially for people struggling to grasp Lisp's benefits.
my mind was immediately blown away by the following passage right at the top of system.fth, the part of pForth implemented in Forth on top of the C interpreter:
: ( 41 word drop ; immediate
( That was the definition for the comment word. )
( Now we can add comments to what we are doing! )
According to that question's answer and comments, that definition is buggy (making it not quite a fair comparison). Here is a less buggy, more flexible version, taken from a comment:
(defmacro unless [expr & body] `(if ~expr nil (do ~@body)))
This article doesn’t attempt to suggest the addition of an until statement to Python. Although I think such a statement would make some code clearer, and this article displays how easy it is to add, I completely respect Python’s philosophy of minimalism. All I’m trying to do here, really, is gain some insight into the inner workings of Python.
I was reminded of this by the post on the goto statement -- having used the AST module recently in a limited capacity[1], I was really impressed by how easy it was to use. There's a good pycon talk for those interested specifically in this part of the process[2], and you can also see the full grammar[3].
15 comments
[ 2.0 ms ] story [ 49.2 ms ] threadhttp://wiki.tcl.tk/917
On a more serious note, the ability to add constructs to the language is not nearly as unique to LISP as Lispers think it is.
http://www.yosefk.com/blog/my-history-with-forth-stack-machi...
my mind was immediately blown away by the following passage right at the top of system.fth, the part of pForth implemented in Forth on top of the C interpreter:
Macro in Lisp are essentially functions taking code as argument and returning code, but they are executed at compile-time.
Edit: replaced with the correct version, sorry for the error.
Special cases aren't special enough to break the rules. ... There should be one-- and preferably only one --obvious way to do it.
Here's the second section:
A language-advocacy digression
------------------------------
This article doesn’t attempt to suggest the addition of an until statement to Python. Although I think such a statement would make some code clearer, and this article displays how easy it is to add, I completely respect Python’s philosophy of minimalism. All I’m trying to do here, really, is gain some insight into the inner workings of Python.
[1] http://blueprintforge.com/blog/2012/02/27/static-modificatio...
[2] http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-wha...
[3] http://docs.python.org/library/ast.html#abstract-grammar
http://tomlee.co/wp-content/uploads/2008/12/python-language-...