Как написать функцию, удаляющую из каждого подсписка минимальный элемент (HomeLisp)
Формулировка задачи:
снова пробую решить сам и не могу...
написать функцию, удаляющую из каждого подсписка минимальный элемент.
и еще посоветуйте хороший учебник по lisp (пока начал читать Мир Лиспа -Сеппянен )
Решение задачи: «Как написать функцию, удаляющую из каждого подсписка минимальный элемент (HomeLisp)»
textual
Листинг программы
- (defun remove-if (p lst &KEY (count NIL) (from-end NIL))
- (COND (from-end (reverse (remove-if p (reverse lst) :count count :from-end NIL)))
- (T (COND ((NULL count)
- (COND ((NULL lst) NIL)
- ((FUNCALL p (CAR lst)) (remove-if p (CDR lst)))
- (T (CONS (CAR lst) (remove-if p (CDR lst))))))
- (T (COND ((NULL lst) NIL) ((= count 0) lst)
- ((FUNCALL p (CAR lst)) (remove-if p (CDR lst) :count (SUB1 count)))
- (T (CONS (CAR lst) (remove-if p (CDR lst) :count count)))))))))
- ==> remove-if
- Файл C:\HomeLisp\laba3\88.lsp успешно загружен
- (remove-if '(1 2 ((3 4) (5 6) (((7 8))))))
- PairLis: Слишком мало фактических параметров
- ==> ERRSTATE
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д