Destructuring von Parametern in Clojure

In Clojure gibt es ein nettes Sprachmittel, um Parameter -oder generell: Elemente aus Listen- herauszuholen. Am häufigsten wird das sicher bei Funktionsparametern eingesetzt. Hier ist ein einfaches Beispiel: ;; Anlegen einer Koordinate (def coord [3 5]) ;; Ausgeben der Koordinaten (let [[x y] coord] (println "x:" x " y:" y)) Zeile 2 legt eine Koordinate an, bestehend aus 2 Zahlen. Zeile 4+5 destructures die Koordinate und weist den Parametern x und y die Werte aus coord zu....

28. Februar 2011 · Carsten

Unit Tests in Clojure (und Leiningen)

Damit es hier nicht zu weichspülerartig mit Videos weiter geht, kommt noch was für die Clojure-Leute. 🙂 Ich will langsam mit den Unit Tests für Clojure anfangen und hab dazu 3 sehr einfache Funktionen definiert. Dazu eine Datei mit einigen einfachen Unit Tests. Das ganze kann man mit Leiningen sehr einfach ausführen: $ lein test Testing clj-testtest.test.core Ran 7 tests containing 7 assertions. 0 failures, 0 errors. Hier ist der Code:...

28. Februar 2011 · Carsten

Blogs über Clojure

Weil ich in den letzten Tagen selbst auf der Suche nach interessanten Blogs zu Clojure gewesen, aber nichts gefunden habe, will ich hier mal eine Liste von interessanten Stellen im Netz aufbauen. Planet Clojure – dieser Meta-Blog aggregiert viele andere Quellen, gut als Einstieg Blog von Clojure.com (nicht die offizielle Seite, sondern ein Dienstleister!) Learning Clojure Compojure on GAE – sehr interessante Tutorials zur Google AppEngine Ich werde die Liste erweitern, wenn ich mehr Quellen finde....

19. Februar 2011 · Carsten

Clojure Tutorial, Teil 4: Organisation in Dateien

Dies ist der vierte Artikel in einer kleinen Serie, die meine ersten Schritte in der neuen funktionalen Programmiersprache Clojure dokumentieren soll. Die Artikel werden in unregelmäßigen Abständen hier publiziert. Bei der Arbeit mit Clojure ist das Standardvorgehen zur Organisation von Sourcecode das Aufteilen von logischen Einheiten von Funktionen in einzelne Dateien. Die Namespaces der Funktionen sollten diese logische Zusammengehörigkeit wiederspiegeln. Ich habe das ganze mal am Beispiel einer sehr einfachen HTML-Bibliothek ausprobiert....

15. Februar 2011 · Carsten

Clojure Tutorial, Teil 3: MongoDB

Dies ist der dritte Artikel in einer kleinen Serie, die meine ersten Schritte in der neuen funktionalen Programmiersprache Clojure dokumentieren soll. Die Artikel werden in unregelmäßigen Abständen hier publiziert. Heute hab ich mit meinen Gehversuchen in Clojure weiter gemacht. Diesmal ging’s darum, die NoSQL-DB MongoDB anzusprechen. Ich will mir nicht dauernd SQL-Datenbanken wie PostgreSQL oder MySQL ans Bein binden, nur um mich anschliessend mit den elenden JOIN-Statements rumzuschlagen. Meine SQL-Kenntnisse hören so ungefähr bei SELECT * FROM X auf - und so soll das auch bleiben. Deshalb stand heute ein simples Anwendungsgerüst auf meinem Stundenplan, das eine Webseite zur Verfügung stellt, die Daten aus einer MongoDB liefert. Also, ran ans Werk. Wer möchte, kann sich das fertige Projekt von Github holen. ...

12. Januar 2011 · Carsten

Clojure Tutorial, Teil 2: Namespaces

Dies ist der zweite Artikel in einer kleinen Serie, die meine ersten Schritte in der neuen funktionalen Programmiersprache Clojure dokumentieren soll. Die Artikel werden in unregelmäßigen Abständen hier publiziert. Im letzten Artikel habe ich in dem erweiterten Hallo Welt eine Var definiert, in der ich die auszugebende Nachricht "Hallo Welt" abgelegt hatte. Man könnte jetzt glauben, eine Var ist gleichbedeutend mit einer globalen Variable, aber das ist nicht so. Namespaces In Clojure sind alle Variablen und Funktionen “gescoped”, d....

02. Dezember 2010 · Carsten

Clojure Tutorial, Teil 1

Dies ist der erste Artikel in einer kleinen Serie, die meine ersten Schritte in der neuen funktionalen Programmiersprache Clojure dokumentieren soll. Die Artikel werden in unregelmäßigen Abständen hier publiziert. Ich beschäftige mich im Moment mit Clojure, einer relativ neuen funktionalen Programmiersprache. Dabei will ich vor allem von meinem bisherigen Fokus der objekt-orientierten Programmierung (OOP) abrücken, um mal wieder ein wenig frischen Wind zu schnuppern. Golang war nicht ganz das richtige, da ich dort auch auf objekt-orientierte Weise entwickelt habe....

29. November 2010 · Carsten