Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.


Or Forth.

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:

    : (   41 word drop ; immediate
    ( That was the definition for the comment word. )
    ( Now we can add comments to what we are doing! )


Here, adding a 'unless' statement:

    (defmacro unless [expr & body] `(if ~expr nil (do ~@body)))
Taken from: http://stackoverflow.com/questions/2977882/defining-clojure-...

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.


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)))


Or adding a new statement to Tcl:

http://wiki.tcl.tk/917


Or BASIC ;-) http://en.wikipedia.org/wiki/DOS_Wedge

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.


Or Io:

  unless := method(call evalArgAt(0) ifFalse(call evalArgAt(1)))
Usage example...

  unless(1 == 2, writeln("Tis false"))




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: