2015-06-15 6 views
0

Привет, почему я получаю *** - EVAL/APPLY: too many arguments given to F в вызове функции с параметром вложенных списков. Я не могу понять это, так как я передал простой вложенный список.EVAL/APPLY: слишком много аргументов для F

(defun f (L) 
    (cond 
     ((NULL l) nil) 
     ((listp (car L)) 
      (append (F(car L))) (F(cdr L) (car (F (car L))))) 
     (T (list(car L))) 
    ) 
) 

(setq A '((1) 2 3)) 
(f A) 
+2

Вы можете улучшить форматирование своего кода? –

ответ

5

Это лучше форматирование должно сделать его легко обнаружить ошибку:

(defun f (l) 
    (cond ((null l) nil) 
     ((listp (car l)) 
     (append (f (car l))) 
     (f (cdr l) 
      (car (f (car l))))) 
     (t (list (car l))))) 

Если это не помогает, используйте SBCL скомпилировать функцию. Это даст вам очень четкое сообщение об ошибке.

+0

спасибо ... '(f (cdr l) (автомобиль (f (автомобиль l))' –

Смежные вопросы