MixHash 很有用 - 但需要一些说明

p6s*_*eve 6 units-of-measurement raku

这是对Baggy add (+) work on MixHash weights的(有点迟到的)跟进吗?. 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. 结果如果 MixHash (+) Any 潜入一个顽皮的不需要的元素 dmix => ("m"=>2,"kg"=>1,"s"=>-2,"MixHash"=>1) - 这是一个错误,对。[我已经通过将通货紧缩默认设置为空集来修补...... MixHash $.dmix is rw = ?.MixHash;]
  3. 文档https://docs.raku.org/language/setbagmix将 (+) 显示为 Baggy 添加,但 (-) 显示为 Set Difference。当我做 MixHash (-) MixHash 我似乎得到了宽松的减法 - 这就是我想要的。希望这是文档中的疏忽?

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

Eli*_*sen 6

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

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

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