MixHash 有用——但需要一些说明

MixHash working usefully - but need some clarifications

这是对 的(稍晚)跟进。 MixHash 是单位比较的好工具——因为我知道我的 dmix => ("m"=>2,"kg"=>1,"s"=>-2).MixHash 是'kg m2 per s2' 和 'kg.m^2/s^2' 相同,依此类推。

这是我寻求的三重清晰度:

  1. 我仍然需要将 MixHash (+) MixHash 的结果强制转换为 MixHash(默认结果是一个不可变的 Mix)- 是否仍然打算将一个或多个 MixHashen 上的操作结果作为 MixHash?
  2. 结果if MixHash(+) Any偷偷混进了一个顽皮的不需要的元素dmix => ("m"=>2,"kg"=>1,"s"=>-2 ,"MixHash"=>1) - 这是一个错误,对吧。 [我已经通过将通缩默认值设置为空集来修补... MixHash $.dmix 是 rw = ∅.MixHash;]
  3. 文档 https://docs.raku.org/language/setbagmix 将 (+) 显示为 Baggy 添加,但将 (-) 显示为 Set Difference。当我执行 MixHash (-) MixHash 时,我似乎得到了 Baggy 减法——这正是我想要的。希望这是文档中的疏忽??

让我知道我是否可以提供代码或应该提交错误报告...

  1. 是的,如果集合运算符的任一侧是可变版本,那么结果也应该是可变版本。如果不是,那就是bug。

  2. Any 是一个值,尽管它是一个未定义的值。如此有效,右侧就像 Any.MixHash(即 (Any=>1).MixHash)一样。所以这不是一个错误。另外,您也可以说 has %.dmix is MixHash

  3. 这确实是文档中的问题。不是真正的疏忽,而是更新失败,因为在集合运算符的旧实现中,行为。