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