在计划中实施has-list

时间:2011-02-27 21:10:47

标签: lisp scheme computer-science

如何递归地实现Scheme函数has-list,它测试列表是否包含其他列表作为元素。例如(has-list'(1 2 3))应该返回false,而has-list'(1 2(3 4)5))应该返回true。

4 个答案:

答案 0 :(得分:1)

如果您的实施具有类似ormap的内容,那么:

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

在Dan D.中使用or的答案将无效。

答案 1 :(得分:1)

如果列表不是空列表,并且其第一个元素是列表或列表的其余部分具有列表作为元素,则列表具有列表作为元素。对Scheme代码的翻译留给读者练习。

答案 2 :(得分:1)

如果你需要递归地而不使用map:

 (define (has-list? lst)
    (cond
      ((null? lst) #f)
      ((list? (car lst)) #t)
      (else (has-list? (cdr lst)))))

答案 3 :(得分:0)

(define (has-list? X) (apply or (map list? X)))