Реализация has-list в схеме - PullRequest
       38

Реализация has-list в схеме

1 голос
/ 28 февраля 2011

как вы можете рекурсивно реализовать функцию Scheme has-list, которая проверяет, содержит ли список другой список в качестве элемента.Например (has-list '(1 2 3)) должен возвращать false, а (has-list' (1 2 (3 4) 5)) должен возвращать true.

Ответы [ 4 ]

1 голос
/ 28 февраля 2011

Если вам нужно сделать это рекурсивно и без использования карты:

 (define (has-list? lst)
    (cond
      ((null? lst) #f)
      ((list? (car lst)) #t)
      (else (has-list? (cdr lst)))))
1 голос
/ 28 февраля 2011

Если ваша реализация имеет что-то вроде ormap, то:

(define (has-list? l) (ormap list? l))

Использование or, как в ответе Дэна Д., не сработает.

1 голос
/ 28 февраля 2011

Список имеет список как элемент, если он не является пустым списком и либо его первый элемент является списком, либо остальная часть списка имеет список как элемент.Перевод кода Схемы оставлен читателю в качестве упражнения.

0 голосов
/ 28 февраля 2011
(define (has-list? X) (apply or (map list? X)))
...