Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Ich kenn mich in Clojure nicht wirklich aus; aber deine Einrückung zeigt schon, dass Lisp-Dialekte für dich neu sind.
Klammern geben nicht wie in C-Sprachen die Syntax unter irgendwelchen Anweisungen vor, sondern Klammern sind das syntaktische Konstrukt für eine Liste. Eine Liste als Code wird (fast immer) nach der einfachen Regel evaluiert:
Das erste Listenelement (evaluiert) stellt die aufgerufene Funktion dar; die weiteren Elemente (evaluiert) die Parameter. Dein else-Zweig ist:
Code:
((println "jo") (x (rest l)))
Es werden also (println "jo") und (x (rest l)) evaluiert und das Ergebnis von (println "jo") wird als Funktion aufgerufen (mit einem Parameter, nämlich dem Ergebnis von (x (rest l))). Das ist nicht das, was du willst. Du willst, dass die beiden Funktionen einfach nacheinander aufgerufen werden. In Lisp wäre das der special operator "progn" und in Scheme "begin". In Clojure wird er ähnlich heißen.