14 lines
314 B
Racket
14 lines
314 B
Racket
#lang racket/base
|
|
|
|
(provide hash-union)
|
|
|
|
;; map map (key val val -> val) -> map
|
|
(define (hash-union h1 h2 f)
|
|
(for/fold ([h* h1])
|
|
([(k v2) h2])
|
|
(let* ([v1 (hash-ref h1 k #f)]
|
|
[new-val (if v1
|
|
(f k v1 v2)
|
|
v2)])
|
|
(hash-set h* k new-val))))
|