球拍:怎么检查列表的大小?

时间:2017-02-10 21:57:54

标签: racket

我需要球拍帮助

IdentityDbContext

测试它

(define size1 (lambda (m)
               (printf "size is ~v" (length m))))

很好

但是第二次测试

>(size1 '(2 8 9 0 'uu 98 0))
size is 7

它给了我1,cuz of the brocket,然而

我想提供的是3

我需要帮助

2 个答案:

答案 0 :(得分:2)

请注意以下事项:

'((((7) 9 (11))))           ; list with one element --> '(((7) 9 (11)))
'(((7) 9 (11)))             ; list with one element --> '((7) 9 (11))
'((7) 9 (11))               ; list with 3 elements  --> '(7), 9 and '(11)

如果您打算编写包含三个元素的列表,那么您的列表应为'((7) 9 (11)),并且您的函数调用将变为:

> (size1 '((7) 9 (11)))
size is 3

答案 1 :(得分:1)

所以你想要计算非空的元素而不是对:

(define (count-atoms tree)
  (cond ((null? tree) 0)       ; an empty tree has 0 atoms
        ((not (pair? tree)) 1) ; an atom is exactly one atom
        (else ???)))           ; the sum of counting atoms in car and cdr

这与length的制作非常相似。