我有一个不可变的哈希表,其中包含一系列列表作为值。我写了一个程序,所以我可以在其中一个列表中添加一个项目,返回一个新的哈希:
(define (update hash key item)
(hash-set hash
key
(cons item
(hash-ref hash key)))))
这似乎工作得很好,但感觉很尴尬和冗长。是否有内置的程序可以实现这一目标,或者可能是一种更为惯用的方法来实现同样的目标?
答案 0 :(得分:2)
这很简单:
(define (update hash key item)
(hash-update hash key (curry cons item) '()))
说明:
hash-update
返回 new 哈希,其中包含给定密钥的更新值 - 或者您可以使用hash-update!
来就地修改哈希值。hash
和key
不言自明。cons
一个新项目的过程(因为旧值是一个清单);这被设置为给定键的新值。