Как мне вызвать функцию в схеме? - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь вызвать рекурсивный вызов в схеме. Все, что я получаю, это ошибки, которые я не понимаю.

(define removeFirst (lambda (N L)
(cond 

( (null? L)  '()  )  

( (= (car L) N)   (removeFirst(N cdr L))                     )

( #t          (cons (car L) (removeFirst(N cdr L)) )          )         )

)
))

1 Ответ

3 голосов
/ 14 октября 2019

Стиль вызова Algol / C:

funName(arg1, arg2)

Стиль вызова Lisp:

(fun-name arg1 arg2)

Doing

(removeFirst (N cdr L))

То же, что:

removeFirst(N(cdr, L));

Отлично, пока N является функцией, но вы также сравниваете N с числом, так что в вашем коде есть хотя бы одна ошибка при использовании N. Дополнительные скобки в C часто игнорируются, никогда в Lisp. Они важны для смысла кода. Вы, вероятно, хотели написать совершенно другой код:

(removeFirst N (cdr L))
...