Вложенные списки в Common Lisp действительно смутили меня.Вот проблема:
Используя рекурсию, пусть (nested-list 'b '(a (b c) d))
возвращает t
, если первый аргумент появляется во втором аргументе (который может быть вложенным списком), и nil
в противном случае.
Я пытался find
, но он работает только в том случае, если первый аргумент '(b c)
.Я перевел взгляд на лямбда-выражения.Сначала я хочу сгладить второй аргумент, а затем использовать eq
для сравнения аргументов.
(defun nested-list (x y)
(cond
((null y) ())
(t (append (lambda (flatten) (first y))
Тогда я застрял.Несмотря на то, что я много читал о лямбда-выражениях, это все равно смутило меня.Я не знаю, как вызвать его, когда мне нужно, я знал функцию funcall, но вы знаете, я просто не могу ее получить.Я только что изучил Common Lisp в течение 5 дней, так что я надеюсь, что вы можете дать мне подсказку.Большое спасибо!