Итак, я реализую функцию, которая получает первые n элементов списка в LISP (Allegro mlisp) для проекта, и я не могу понять, почему я не могу выполнить вычисление вычитания. Я получаюНевозможно вычесть из числа в LISP?
Мой код для этого метода является то, что составляет в слушателе тонкой
(defun get_upto (n cut_list)
(if (= n 0) cut_list
(cons (car cut_list) (get_upto ((- n 1) (cdr cut_list))))))
но если я пытаюсь выполнить
$: (get_upto 3 '(1 2 3 4 5))
Я получаю ошибку
Error: Illegal function object: (- n 1)
Что я здесь делаю неправильно? Я прохожу число, и нет проблем с проверкой, если n = 0.
есть скобка для многих в последней строке, почему она думает, что вы хотите нас e (- n 1) как функция. – sebs
, и вы можете захотеть изменить свой оператор exit на '(= n 0) nil' – sebs
Общие Lisp требует, чтобы вы вернули свои круглые скобки. Это отличается от других языков, к которым вы могли бы привыкнуть. Скобки меняют смысл вашей программы. Они никогда не являются факультативными или бессмысленными. – sigjuice