计算列表中的特定数字

时间:2016-12-14 02:35:10

标签: list count scheme racket

如何使用count计算列表中的特定数字?

(define lst '(1 1 1 1 2 2 2 3 3 3 3 3 4 4)
(count 2 lst);; what should I use at the place of '2'

但是它导致了以下错误。

  

计数:合同违规
    预期:程序?
    给出:2

1 个答案:

答案 0 :(得分:1)

count计算过程返回true的列表元素的数量。在这种情况下,如果元素为2:(lambda (x) (equal? x 2)),则需要一个仅返回true的过程。

完整的,你可以做

(define lst '(1 1 1 1 2 2 2 3 3 3 3 3 4 4))
(count (lambda (x) (equal? x 2)) lst)

旁注:您可以通过用(curry equal? 2)替换lambda表达式来缩短它。