Am Rande notiert ...

sharplispers/cormanlisp. Schon lange nix mehr gelispelt. Corman Lisp – seiner Zeit eine der coolsten Implementierungen von Common Lisp auf Windows – ist jetzt Open Source und auf github. Allerdings brauchts wohl erst noch einiges an Überarbeitung, bevor es auf modernen Windows-Versionen wieder einwandfrei funktioniert. Aber ein erster Schritt ist ja jetzt gemacht, mit der Source-Freigabe.

FriCAS – an advanced CAS. Habe ich ein bischen aus den Augen verloren – FriCAS ist ehemals Axiom, ein ziemlich weit ausgebautes Mathematik-Paket ala Mathematika, geschrieben in Common Lisp. Gibts für verschiedene Systeme, etwas spröde in der Oberfläche (halt eine Kommandozeile), aber sehr mächtig. Und etwas moderner als vielleicht Maxima (wobei für Maxima gibt es GUI Optionen, keine Ahnung was FriCAS da zu bieten hat). Wie jedes anständige Open Source Projekt ist es natürlich nur der Fork eines Forks – unter Open Axiom gibt es ein weiteres Projekt und unter Axiom wird der ursprüngliche Code weitergeführt. Wobei für mich das seit Sage (und eigentlich sogar noch viel mehr seit Anaconda und IPython Notebooks) alles nicht mehr so hohe Relevanz hat – in der Regel sind meine Anforderungen auf deutlich niedrigerem Niveau und mit den über IPython und Python verfügbaren Libraries schon abgedeckt. Klar ist Mathematica und ähnliches immer noch spannend – aber die Motivation die Pakete zu starten und sich in die doch recht andere Syntax-Welt zu begeben ist eher gering. Python hat halt den good-enough Status schon lange erreicht.

part-cw/lambdanative. Interessant – eine Cross-Plattform Programmierumgebung mit Zielen auf Android, iOS, OSX, Linux, Windows und BSD. Basierend auf Gambit-C, einem ziemlich guten (und schon recht lange verfügbaren, also auch „erwachsenen“) Scheme Compiler.

„3 windows builds have been performed on win95. There is an as yetunidentified runtime error running the 2.6.9 images on win7. Moreinformation here will be forthcoming shortly.“ –  [Gcl-devel] GCL 2.6.8 and 2.6.9 are released. Abgesehen davon, dass ich dachte es wäre schon lange tot (ein „paar“ Jahre hat der Release ja gedauert), schon lustig, dass jemand noch heute Builds für Windows unter Windows 95 macht …

Updated Cocoa Contrib. Wow – CCL bekommt damit ganz neue (und deutlich erweiterte) Möglichkeiten unter OSX GUI Programmierung zu machen. Das wächst so langsam.

davazp/jscl · GitHub. Wow, beeindruckend. Ein Common Lisp, das als REPL im Browser läuft. Spannend daran ist, wie vollständig das ist – nach einem (defun anton (a b) (+ a b)) ging direkt ein (disassemble #’anton) ohne Probleme und lieferte mir den generierten Javascript Code. Auch andere Konstrukte aus der CL Welt laufen problemlos. Definitiv weiter beobachten, könnte spannend werden (z.B. ein JSCL auf Node.js?).

Was ich so im Laufe der Woche als lesenswert betrachtet habe und nicht extra verlinken wollte, hier gesammelt und unkommentiert.

lein-droid Wiki. Bin ja mal wieder am Rumspielen mit Alternativen zur nackten Android-Java-Programmierung und das hier wäre ein interessanter Kandidat, da man mit Clojure rumspielen kann.

Write Yourself a Haskell… in Lisp 17 February 2013. Sowas begeistert mich ja immer, auch wenn ich zugeben muss, dass ich aller Wahrscheinlichkeit nach nix damit machen werde. Trotzdem, interessant zu lesen.

Moby ist ein Paket für Racket mit dem man Android Programme erzeugen kann. Integriert in DrRacket hat man auch gleich eine passende IDE in der das meiste auch getestet werden kann. So viel auszuprobieren, so wenig Zeit.

Clojure/core — Reducers – A Library and Model for Collection Processing. Warum eine neue Library? Weil die Standardfunktionen zwar interessant und sinnvoll sind, aber man eben manchmal doch eine striktere Implementierung braucht, die z.B. zwischendurch generierte temporäre Collections vermieden werden und eine direkte out-of-the-box Unterstützung für Parallelisierung geliefert wird. Ohne große Handstände und Umstände, nur ein anderer Namespace.

mtravers/heroku-buildpack-cl. Und noch so ein Lisp-Link – hier hat sich jemand auf Herokus buildpack-capable stack gestützt und für Clozure CL ein Buildpack aufgebaut, so dass man darüber auch Common Lisp in die cloud stellen kann. Wobei das dann weniger Ähnlichkeit mit Google App Engine hat, sondern wohl eher mit sowas ähnlichem wie Amazon EC2.

Ganz tief drinnen bin ich ja immer noch ein Lisp-Fan. Deshalb ist der ecl-iphone-builder von Terje Norderhaug für mich sehr interessant – damit kann man eine Version von Embeddable Common Lisp für das iPhone oder iPad compilieren und dann über XCode auf ein iOS Gerät bringen, dort einen Swank-Server starten und dann remote connecten – und dann mit Lisp auf dem iPhone rumspielen oder programmieren. Ok, die Anbindung an die OSX APIs ist noch ein bischen spröde.

Practical Common Lisp – Crawling InterfaceLift with Common Lisp – second try. Interessanter Durchlauf eines einfachen Projektes in Common Lisp bei Einsatz von Quicklisp. Mach wirklich einiges einfacher als wenn man roh in CL programmiert und die ganzen Pakete und Systeme von Hand verwaltet. Das Beispielscript sollte man allerdings nicht unbedingt laufen lassen, denn es verstößt gegen die Nutzungsbedingungen von Interfacelift (und ist nicht wirklich nett zu deren Servern).

Mac App Store – Clozure CL. Eine der netteren freien Common Lisp Implementierungen ist jetzt im App Store bei Apple. CCL ist im Prinzip die freie und portable Variante des alten Macintosh Common Lisp, mit einer Integration in Objective C Frameworks. Also durchaus interessant damit rumzuspielen wenn man sowohl Lisp als auch Cocoa mag.

Snow project. Sehe ich zum ersten Mal, ist aber schon seit ein paar Jahren raus – eine GUI Library für ABCL (Armed Bear Common Lisp), welches ja bekanntlich auf der Java VM läuft. Liefert auch gleich als Standard eine grafische REPL mit in die man Common Lisp eingeben kann. Laut Doku leider auf einer etwas älteren Version von ABCL basierend – in den neueren hat sich schon eine ganze Menge getan. Trotzdem ganz nett um mal damit rumzuspielen.

Elnode – an Emacs version of node.js. Mal wieder ein Projekt aus der Klasse „weil es geht“ – ich glaube jedenfalls nicht, dass irgendjemand auf die Frage „wie will ich meine Webservices betreiben“ als Antwort spontan „Emacs“ sagen würde. Aber nunja, das Betriebssystem mit eingebauten Basisfunktionen zur Textverarbeitung kann eben auch einen asynchronen Webserver darstellen.

Parenscript. Darf man nicht vergessen, wenn man von Lisp-in-JavaScript redet, denn das ist wohl der Urvater und am weitesten ausgebaute Dialekt. Besonderheit ist auch noch: keine Runtime, es wird wirklich nur JavaScript direkt erzeugt ohne Abhängigkeiten (ausser natürlich den Abhängigkeiten die man selber in den Code reingebracht hat). Hatte ich wohl im alten Blog schon mal, aber egal.

manuel/edgelisp. Weil ich nie die Finger von Klammern lassen kann – ein Common Lisp Dialekt und dessen Implementation, die nach JavaScript compiliert un den Lisp-Code im Browser ausführbar macht. Macht einen recht vollständigen Eindruck – viele andere Projekte zeigen nur die rudimentären Elemente, aber hier gibts auch schon generische Funktionen und Makros.

What Is Inside A Cat. Ein sehr interessantes Dokument, das die Implementierung von Wraith Scheme sehr detailliert beschreibt, speziell auch die Implementierung der parallelen Prozesse.

Clack – Web Application Environment for Common Lisp. Das sieht endlich mal richtig nett und schlank aus – die meisten Common Lisp Webframeworks sind mir einfach zu groß, zu kopfig. Das hier sieht sehr viel pragmatischer aus, ein simples Routing, ein schlanker Request und eine Funktion die drauf reagiert. Da könnte man mal mit rumspielen, Installation ist dank Quicklisp trivial (was bin ich froh, dass es jetzt Quicklisp gibt, das asdf-install Gehampel war wirklich nervig). Vom Ansatz erinnert es etwas an Turbogear für Python – es werden diverse vorhandene Libs mit Clack gebündelt, sozusagen ein schlankes Web-best-practices. Ein Applikationsframework das in dem minimalen Environment auch läuft, gibt es mit Caveman auch schon.

AI art | painting robot | art | expert systems. Mal was anderes – ein richtiger Roboter der mit Lisp (also zumindestens das Prototyping) gesteuert mal. Also nicht so ein virtueller Roboter ala Turtlegrafik, sondern richtige Hardware die sich bewegt.

xmlisp – eXtreme Media Lisp: Rich media cross-platform programming for 3D (OpenGL) and 2D applications. Hatte ich glaube ich schon mal, bin mir aber nicht sicher. Egal, Wiederholungen sind ja nix ungewöhnliches, und das hier ist wirklich interessant – eine Lisp-Umgebung mit besonders guter Unterstützung für 2D und 3D Daten. Hat noch eine ganze Menge mehr auf der TODO – das Ziel ist eine Lisp-Umgebung speziell für Spieleprogrammierung und andere grafische, interaktive Programme. So ein bischen wie Processing.

MilkPack – Edgar Gonçalves. Interessantes Projekt das eine Taskliste implementiert, die mit Remember-the-Milk im Internet kommuniziert. Das interessante daran: es ist in Common Lisp geschrieben und nutzt intensiv die Objective-C Bridge für OpenMCL.

dyoo/moby-scheme. Noch eine interessante Sache für Android: ein PLT Scheme (also Racket) Dialekt und eine passende Toolchain um aus Racket Advanced Student Language + World Primitives (ASL ist ein schon recht weit gehender Scheme-Dialekt in Racket und die World Primitives sind für reaktives Programmieren in Scheme) erstellte Anwendungen in JavaScript laufen zu lassen und diese dann zu Androit-Anwendungen zu bündeln. Also Programmierung von Android-Handys in einem reaktiven Scheme-Dialekt. Oder noch kürzer: Klammern für Android.

spock – The Chicken Scheme wiki. Wem Dylan auf JavaScript nicht passt, wie wäre es mit Scheme? Interessant hieran ist die Verbindung zu Chicken Scheme – chicken scheme ist eine der interessanteren Scheme-Implementierungen der letzten Zeit die sich speziell der Integration in normale Systemumgebungen widmet (FFI und einfaches Linken mit C-Libs), von daher lässt das auch ein bischen was von Spock in Bezug auf JavaScript erwarten. Und die dokumentierten Funktionen schauen auch schon recht gut aus – nicht einfach nur eine Spielzeugimplementierung, sondern scheinbar schon eine Menge von Funktionalität.

turbolent/ralph. Und wem dann unter Flusspferd das JavaScript zu blöd wird, der kann ja einfach Ralph installieren und hat dann ein Dylan-ähnliches Lisp, das seine Funktionsdefinitionen nach JavaScript compiliert. Warum auch immer man das wollen würde, vielleicht einfach nur weil es geht.

IronScheme. Interessant – ein Scheme für .NET. Und im Gegensatz zu einigen toten Projekten die ich gefunden habe, scheint hier auch noch was zu passieren. Ok, ich selber tendiere warscheinlich eher zu IronPython, F# oder wenn es Lisp sein soll, Clojure für .NET (davon gibts mitlerweile auch recht aktuelle binäre Pakete zum Ausprobieren, leider wohl derzeit nur Windows, jedenfalls spuckt es unter Mono Fehler aus).

ABCL – Release notes v0.25. Neue Version raus und ABCL entwickelt sich immer mehr in eine wirklich brauchbare Common Lisp Implementation. Dadurch, dass es auf der JVM läuft, hat man auch leichten Zugriff auf viele Libraries (sofern man es denn will) und seit 0.24 läuft auch Quicklisp sauber mit ABCL und damit hat man auch leichten Zugriff auf viele Common Lisp Libraries. Bei den CL Libraries hakt es aber leider etwas, da viele Programmierer ABCL nicht berücksichtigen (und gerade im CLOS Bereich noch Defizite sind).

Feeding the Bit Bucket» Blog Archive » Common Lisp, Clojure and Evolution. Nein, Clojure wird nicht als Evolution von Common Lisp beschrieben – das ist einfach das Beispielprogramm „Evolution“ aus dem Buch „Land of Lisp“ in Clojure übersetzt von jemandem der mit dem Buch Clojure lernt indem er eben alle Beispiele in Clojure realisiert mit der Common Lisp Code als Basis. Und von daher eine gute Vergleichsmöglichkeit zwischen Clojure und Common Lisp. Vielleicht ja für 2 oder 3 Leser meines Blogs interessant. Ansonsten für mich als Blogmark um später wieder draufzugucken.