как вы можете рекурсивно реализовать функцию Scheme has-list, которая проверяет, содержит ли список другой список в качестве элемента.Например (has-list '(1 2 3)) должен возвращать false, а (has-list' (1 2 (3 4) 5)) должен возвращать true.
Если вам нужно сделать это рекурсивно и без использования карты:
(define (has-list? lst) (cond ((null? lst) #f) ((list? (car lst)) #t) (else (has-list? (cdr lst)))))
Если ваша реализация имеет что-то вроде ormap, то:
ormap
(define (has-list? l) (ormap list? l))
Использование or, как в ответе Дэна Д., не сработает.
or
Список имеет список как элемент, если он не является пустым списком и либо его первый элемент является списком, либо остальная часть списка имеет список как элемент.Перевод кода Схемы оставлен читателю в качестве упражнения.
(define (has-list? X) (apply or (map list? X)))