#lang racket (define ht (hash "apple" 'red "banana" 'yellow)) (module+ test (require rackunit) (check-equal? (hash-ref ht "apple") 'red)) (define ht2 (hash-set ht "coconut" 'brown)) (module+ test (check-equal? (hash-ref ht2 "coconut") 'brown) (check-exn exn:fail? (lambda () (hash-ref ht "coconut")))) (define (census . lst) (define (helper lst acc-hash) (cond [(empty? lst) (hash->list acc-hash)] [else (let* ([key (first lst)] [current (hash-ref acc-hash key 0)]) (helper (rest lst) (hash-set acc-hash key (add1 current))))])) (helper lst (hash))) (module+ test (check-equal? (sort (census 1 2 3 1 2) #:key car <) '((1 . 2) (2 . 2) (3 . 1))) (check-equal? (sort (census "aardvark" "dingo" "buffalo" "buffalo" "bear") #:key car string