"Weiß nicht, wie zu erstellen ISeq aus: Symbol" Fehler in Clojure

Habe ich Folgendes Clojure-code und ich bin mir nicht sicher, warum es nicht funktioniert:

(defn match (x y &optional binds)
  (cond
   ((eql x y) (values binds t))
   ((assoc x binds) (match (binding x binds) y binds))
   ((assoc y binds) (match x (binding y binds) binds))
   ((var? x) (values (cons (cons x y) binds) t))
   ((var? y) (values (cons (cons y x) binds) t))
   (t
    (when (and (consp x) (consp y))
      (multiple-value-bind (b2 yes)
                           (match (car x) (car y) binds)
        (and yes (match (cdr x) (cdr y) b2)))))))

(Der code wird übersetzt von Paul Graham ANSI Common Lisp Buch.)

Wenn ich es laufen lasse, bekomme ich die folgende Fehlermeldung:

java.lang.IllegalArgumentException: Don't know how to create ISeq from: Symbol
clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:2: java.lang.RuntimeException: java.lang.IllegalArgumentException: Don't know how to create ISeq from: Symbol
        at clojure.lang.Compiler.analyze(Compiler.java:3713)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
        at clojure.lang.Compiler.analyze(Compiler.java:3698)
        at clojure.lang.Compiler.access$200(Compiler.java:37)
        at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:343)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:3858)
        at clojure.lang.Compiler.analyze(Compiler.java:3698)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
        at clojure.lang.Compiler.analyze(Compiler.java:3698)
        at clojure.lang.Compiler.analyze(Compiler.java:3671)
        at clojure.lang.Compiler.eval(Compiler.java:3895)
        at clojure.lang.Repl.main(Repl.java:75)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: Don't know how to create ISeq from: Symbol
        at clojure.lang.LazyCons.rest(LazyCons.java:64)
        at clojure.lang.ASeq.count(ASeq.java:85)
        at clojure.lang.RT.count(RT.java:486)
        at clojure.lang.Cons.count(Cons.java:41)
        at clojure.lang.Compiler.analyze(Compiler.java:3695)
        ... 16 more
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Don't know how to create ISeq from: Symbol
        at clojure.lang.LazyCons.first(LazyCons.java:44)
        at clojure.lang.LazyCons.rest(LazyCons.java:59)
        ... 20 more
Caused by: java.lang.IllegalArgumentException: Don't know how to create ISeq from: Symbol
        at clojure.lang.RT.seqFrom(RT.java:465)
        at clojure.lang.RT.seq(RT.java:448)
        at clojure.seq__28.invoke(boot.clj:92)
        at clojure.every_QMARK___596.invoke(boot.clj:1180)
        at clojure.fn__1147$psig__1149.invoke(boot.clj:2155)
        at clojure.map__602$fn__605.invoke(boot.clj:1214)
        at clojure.lang.LazyCons.first(LazyCons.java:40)
        ... 21 more

Was mache ich hier falsch?

InformationsquelleAutor der Frage Paul Reiners | 2008-12-15

Schreibe einen Kommentar