Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Нужна помощь


Автор: KatrinaLi 29.12.2011, 08:04
Пример применения на лиспе
(f 'a '(2 ((b)) ((©)) '((b a d)) 6 7))
T


(f 'a '(2 ((b)) ((©)) '((b x d)) 6 7))

NIL

Автор: newbee 29.12.2011, 11:54
Код

(defun f (v x &key (test 'eq))
 (if (atom x)
  (funcall test x v)
  (loop for l in x do
   (if (f v l :test test)
    (return-from f t)))))

Автор: k0rvin 29.12.2011, 12:46
немного улучшений:
Код

(defun f (v x &key (test #'eql))
  (labels ((rec (x)
             (if (atom x)
                 (when (funcall test x v)
                   (return-from f t))
                 (loop for l in x do (rec l)))))
    (rec x)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)