我想知道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
提前感谢您的帮助。
答案 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))