nur eine kurze Frage beim Betrachten von Clojure ....
In Anbetracht der folgenden REPL-Sitzung:
%Vor%Warum wird der String-Balken nicht durch die Druckfunktion angezeigt? Es scheint, als ob der Leser versucht, den Rückgabewert von foo (der ein String zu sein scheint) als Funktion aufzulösen? Wie sollte foo definiert werden, dass print die Zeichenfolge in die Kommandozeile schreibt?
Ich bin immer noch ein bisschen schwach auf Clojure im Vergleich zu verschiedenen anderen Lisp-Likes, aber das ist nicht richtig, oder? Sollte
sein %Vor% andernfalls haben Sie eine Funktion definiert, die versucht, die Zeichenfolge "bar"
als Funktion aufzurufen, die mit Ihrem Fehler übereinstimmt.
weil Clojure versucht, das erste Element der any-Liste als Funktionsnamen "aufzulösen" Wenn Sie in der letzten Anweisung die Druckfunktion aufgerufen haben, wird sie mit einem Argument aufgerufen Liste (foo), die als Aufruf der Funktion foo interpretiert wird. so weit so gut.
aber die Funktion foo gibt die Liste ("bar") zurück, was nicht ok ist..es wird wie ein Aufruf der Funktion "bar" interpretiert, die nicht erlaubt ist ..
wenn foo wie (defn foo [] "bar") ist, dann funktioniert es, weil print nicht ("bar") sondern nur "bar" empfängt und mache das Drucken