The Lord of the Lambdas

02nd of February 2008

Abelson et al., The Revised Revised Report on Scheme: »The Lord of the Lambdas«:

Data and procedures and the values they amass, Higher-order functions to combine and mix and match, Objects with their local state, the messages they pass, A property, a package, the control point for a catch– In the Lambda Order they are all first-class. One Thing to name them all, One Thing to define them, One Thing to place them in environments and bind them, In the Lambda Order they are all first-class.

Quite old, but worth to quote.

(Via programming musings.)

Comment

Arc is out

31st of January 2008

Paul Grahams Logo for Arc

Image shamelessly stolen from Paul Grahams Website.


Man mag von Paul Graham halten was man will, aber vorgestern ist etwas passiert, womit ich nicht in den nächsten zehn Jahren gerechnet hätte: PG hat eine erste sehr vorläufige Fassung von Arc veröffentlicht. Vorbei die guten alten Zeiten, in denen man Arc, Hurd und E17 in einem Atemzug nennen konnte. Ich bin erschüttert :)

Paul Graham hat mit On Lisp und seinen Essays (eines der prominentesten dürfte wohl Hackers and Painters sein), schon immer die besseren "Hacker" angesprochen. Etwas später hat er dann mit Arc seinen eigenen LISP-Dialekt erschaffen, von dem über viele Jahre nicht mehr als ein paar Schnippselchen und Ideen bekannt waren. Niemand hat damit gerechnet, dass das irgendwann wirklich kommen wird.

PG sagt selbst, dass es noch zu früh ist und man nicht genau wissen kann, wohin die Reise geht. Arc ist derzeit noch ziemlich unvollständig. So fehlt z.B. eine ordentlich Character-Code-Unterstützung, die mehr als US-ASCII bietet und selbstverständlich hängen sich daran viele auf (da sind ein paar). Wobei es vielleicht schon etwas komisch anmutet, dass die Character-Code-Unterstützung deshalb fehlt, weil PG keine Lust oder Zeit hatte, die MzScheme-Dokumentation zu lesen und die verdammte Unterstützung dafür gleich einzubauen.

Viele von Arcs Funktionen haben sehr kurze Namen (z.B. prn) und einige Konstrukte wie z.B. ein sehr idiomatisches if sind etwas gewöhnungsbedürftig. Es gibt keine Module, usw. usw. Natürlich gibt es Macros (unhygienische, war auch klar):

(mac n-of (n expr)
  (w/uniq ga
    `(let ,ga nil
       (repeat ,n (push ,expr ,ga))
       (rev ,ga))))

Etwas grotest ist, dass Arc derzeit auf MzScheme (→ siehe auch PLT) basiert und nicht auf Common LISP. Dadurch fehlt eine direkte CL-Anbindung und auch ein native code Compiler. Spannend fände ich eine eine Arc-Library für CL (vielleicht arc-compat), damit man all die schönen Libraries von CL verwenden kann und natürlich auch einen ordentlichen Compiler bekommt.

Jedenfalls gefällt es mir, bei der Entwicklung, sofern es denn eine geben wird, zuschauen zu können. Und vielleicht wird es den Tag geben, an dem man mit Arc schöne und sinnvolle Dinge erledigen kann. Ob PG bei der weiteren Entwicklung eine Rolle spielen wird?


Page 1 of 1 pages