为什么set-union和友人不将可变集作为参数?

时间:2019-04-04 05:54:23

标签: racket

我尝试了(set-union (mutable-set) (mutable-set)),但返回了错误。但是我认为文档说输入集只需要generic-set s?

1 个答案:

答案 0 :(得分:1)

此处的合同不精确,但at the beginning of the documentation指出:

  
      
  • 所有哈希集均实现set-> stream,set-empty?,set-member?,set-count,subset?,proper-subset?,set-map,for-for-each,set-copy,set-复制清晰,设置->列表和设置优先。
  •   
  • 不可变哈希集还实现了集添加,集删除,集清除,集联合,集相交,集减和集对称差。
  •   
  • 可变哈希集还实现了set-add!,set-remove!,set-clear!,set-union!,set-intersect!,set-subtract!和set-symmetric-difference!。
  •   

我确实认为文档可以改进。

如果要查看集合的实现,请使用here,其中可变集合不允许set-union

但是请注意,将(mutable-set)放在非第一位置是可以的(这在文档中有明确记录)。例如,这有效:

> (set-union (set) (mutable-set 1 2 3) (mutable-set 4 5 6))
(set 1 5 3 2 6 4)