2016-03-24 4 views
0

Ich bin relativ neu zu lisp. Ich arbeite an einer Funktion, die bestimmt, ob ein Wort in einer Liste vorhanden ist oder nicht.Lisp Fehler, undefined Operator X in Form

(defun is-word-in-list(x lst) 
    (cond ((null lst) NIL) 
     ((not (equal (car lst) x)) 
      (is-word-in-list(x (cdr lst)))) 
     (t 
      t 
     ) 
    ) 
) 

Ich kann diesen Code kompilieren, aber wenn ich versuche, diese Funktion auszuführen Verwendung ist Wort-in-Liste „Hallo“ ‚(Hallo, warum) Ich erhalte eine Fehlermeldung,

Error: Undefined operator X in form (X (CDR LST)) .

Was fehlt mir?

Antwort

1

Sie hatten im rekursiven Aufruf zu viele Klammern. Beachten Sie Folgendes:

  • (is-word-in-list (x (cdr lst))) entspricht isWordInList(x(cdr(lst))) in JavaScript-Syntax
  • (is-word-in-list x (cdr lst)) zu isWordInList(x, cdr(lst)) in JavaScript-Syntax

Sehen Sie den Unterschied entspricht?

+1

thx mann! Das hat funktioniert –