ImperialViolet

Pinging (30 Dec 2003)

Lython [via LtU] is a Lisp like frontend onto Python. Now I've been meaning to write one of these for sometime, good that someone has at last. For example:

# -*- lisp -*-

(def foo (a)
     (print "one")
     (print "two")
     (* a 5))

(def bar (b c)
     (* b c))

(def cat (file)
     (:= f (open file))
     (f.read))

(print (foo "test"))
(print (bar 5  5))
(print (cat "/etc/passwd"))

(and, yes, it can do simple macros)

Firstly, the Clueless Anti-Whitespace Morons might be a little happier but that's unimportant. Mainly Lython has the ability to become the standard Lisp-like-language that Lisp has needed for a long time. As much as ANSI Common Lisp is a good (if huge) standard it still leaves far too much platform specific stuff undefined. The kind of stuff that makes code actually useful. And Lython has all the Python libraries to draw upon.

Now Python just needs to get it's basic language features working. Even in 2.3 this still doesn't work:

def a(x):
  x = 0
  def b():
    x += 1
    return x
  return b

Since Keith requested it, my build script now pings blo.gs. Due to the (cack-handed) nature of the way I do things it might `bounce' a little (e.g. update more than once for a single update) but blo.gs already seems to dampen that.