clisp: переменная не имеет значения - PullRequest
0 голосов
/ 19 мая 2019

Я хочу создать пользовательскую программу, которая извлекает элементы a, у которых есть элемент b (заданный параметром) как пара в списке.

Например, если я даю c в качестве параметра и списка((c a) (c b) (d f) (d g)), результат должен быть 'a' 'b';

Поэтому я определяю функцию, как показано ниже,

(defun myr (b a) (if (= CAAR(a) b) CDAR(a) 'nope myr(b CDR(a))));

и вызываю так

myr(b ((b a) (b c) (a d) (a f)))

Но результаткак variable myr has no value

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

Спасибо за чтение.

1 Ответ

6 голосов
/ 19 мая 2019

Вам на самом деле нужно начать с хорошей книжки-шпиона, например, PCL или ACL .Вы сэкономите много времени.

Синтаксис Lisp отличается от C. В C вы вызываете функцию f с аргументами х и y, например: f(x,y).В Лиспе вы делаете это так: (f x y).

Когда вы вызываете вашу функцию myr(...), вы помещаете символ myr в переменную переменную , а не функция position, которая вызывает ошибку, о которой вы сообщили.

Вам также необходимо использовать quote в зависимости от ситуации.

...