Grasping `all-the-apples-at-once' › 解法样本 Sample solutions › Racket (Group II) [#281]

(for/fold ([p #f]
           [cnt 0]
           [counts null]
           #:result (cdr (reverse (cons `(,p ,cnt) counts))))
          ([c (in-string "aaaabbbcca")])
  (if (equal? p c)
      (values c (add1 cnt) counts)
      (values c 1 (cons `(,p ,cnt) counts))))

该解法是纯函数式的⸺但与上面 GO 的解决方案非常相似。
The solution is pure functional -- yet closely resembling the Go solution above.