Как отправить списки как параметры функции в lisp? - PullRequest
1 голос
/ 06 марта 2012

Итак, у меня ошибка:

EVAL: undefined function P1

Ниже приведен мой код.

(defun andexp (a b) (list 'and a b))
(defun orexp (a b) (list 'or a b))
(defun notexp (a) (list 'not a))

(defun evalexp (main-list bind-list)
;first change the bind-list to work with sublis
(setq new-bind-list (list (car bind-list).(cdr bind-list)))
;here will go the looping to check matching variable names
(sublis main-list new-bind-list)

);end of evalexp function

Здесь я создаю выражение:

(setq p1 (andexp 1 (orexp 'a 'b)))

Что оценивается следующим образом:

(and 1 (or a b))

когда я запускаю приведенный ниже код, я получаю сообщение об ошибке, о котором упоминал выше.

(evalexp ( p1 '( (a 0) (b 1))))

p1 должен содержать список, поэтому я предположил, что он будет работать. Это приводит к моему вопросу о том, как я должен отправлять списки в качестве параметров в функцию? Я делаю это неправильно или это что-то еще?

1 Ответ

2 голосов
/ 06 марта 2012

обратите внимание на ошибочные дополнительные символы:

(evalexp ( p1 '( (a 0) (b 1))))

должно быть

(evalexp p1 '((a 0) (b 1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...