> 1 <
| Автор | Сообщение |
Познающий
17 сообщений |
#1522 2010-02-25 16:33 GMT+3 часа(ов) |
|
доброго времени суток!
Осваиваю Лисп =) При написании первой лабы столкнулся с такой трудностью: ;; Error: Argument 3 given to RPLACA or RPLACD should have been a cons in MUS Если нужно - вот исходник. (setq rdiag '(3 () 4 b f () f g 5 ff 4)) (defun mus(x) (cond ( (null x) (mus(cdr x) 0) ) ( (listp (car x)) (cons(mus(car x)) (mus(cdr x)))) ( (numberp (car x)) (cons(mus(car x)) (mus(cdr x)))) ( (symbolp (car x)) (cons(mus(car x)) (mus(cdr x)))) ( t 0) ) ) (mus rdiag) Что значит эта ошибка? что не нравится интерпретатору в моём рдиане (или где?)? PS да, с рекурсией я очень запутался. |
|
asbest
62 сообщений |
#1523 2010-02-25 17:09 GMT+3 часа(ов) |
|
На правах рекламы...
YLisp / Version 3.6 / Common LISP & CLOS compliant 1991-93 Dmitry Ivanov ( MAI ) Windows port 2003 - 2010 by Arseny Slobodyuk ( FEBRAS ) >(ed "zzz") Загрузить файл ZZZ.LSP? Ошибка: Некорректный аргумент 3 Ошибка обнаружена функцией CAR. break> e (CAR X) l |arg1| = 3 debug> e (LISTP (CAR X)) debug> e (COND ((NULL X) (MUS (CDR X) 0)) ((LISTP (CAR X)) (CONS (MUS (CAR X)) (MUS (CDR X)))) ((NUMBERP (CAR X)) (CONS (MUS (CAR X)) (MUS (CDR X)))) ((SYMBOLP (CAR X)) (CONS (MUS (CAR X)) (MUS (CDR X)))) (T 0)) debug> Понятнее? Число 3 - не есть список, формы после break>, debug> - место обнаружения ошибки. |
|
Познающий
17 сообщений |
#1525 2010-02-25 17:38 GMT+3 часа(ов) |
|
что-то мелькнуло: я понял, что в симбол и намбе надо ставить не кар х а просто х?
Самое забавное, что когда компилирую без вызова функции - все вроде ничего. |
|
misha
465 сообщений |
#1526 2010-02-25 21:03 GMT+3 часа(ов) |
ЦитатаС точки зрения лиспа ваш код не содержит синтаксических ошибок. |
|
asbest
62 сообщений |
#1528 2010-02-26 05:42 GMT+3 часа(ов) |
Цитата (car x) - число, передающееся дальше в mus, но она не умеет обрабатывать числа, т.к. пытается взять у аргумента car. Первое условие в cond еще более странно. Зачем вытаскивать cdr из nil? Он всегда nil. |
|
> 1 <





