列表中有多少列表?

时间:2014-05-10 20:11:57

标签: scheme

我想知道Scheme中列表中有多少列表。

例如:

> (numberOfLists 'a) --> 0

> (numberOfLists '(1 2 3)) --> 0

> (numberOfLists '(1 (2 3) asf)) --> 1

> (numberOfLists '(s1 (1 2 3) (4 5) (6 7))) --> 3

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

使用SRFI 1

(define (number-of-lists lst)
  (if (list? lst)
      (count list? lst)
      0))

答案 1 :(得分:0)

如果您的Scheme实施提供count,您可以使用Chris Jester-Young的答案。 如果没有,您可以将number-of-lists实现为:

(define (number-of-lists lst)

   (define (helper in count)
      (if (null? in)
        count
        (helper (cdr in) (if (list? (car in)) (+ 1 count) count))))

   (if (list? lst)
     (helper lst 0)
     0))