MixHa sh работает с пользой - но нужны пояснения - PullRequest
6 голосов
/ 13 апреля 2020

Это (слегка запоздалое) продолжение до Работает ли Baggy add (+) на весах MixHa sh? . MixHa sh - отличный инструмент для сравнения юнитов - поскольку я знаю, что мой dmix => ("m" => 2, "kg" => 1, "s" => - 2). MixHa sh - это то же самое для «кг м2 на с2» и «кг.м ^ 2 / с ^ 2» и т. д.

Вот три ясности, которые я ищу:

  1. Я все еще необходимо принудительно привести результат MixHa sh (+) MixHa sh к MixHa sh (по умолчанию это неизменный Mix) - это все еще цель, чтобы результат операций на одном или нескольких MixHashen был MixHa sh?
  2. Результат, если MixHa sh (+) Любой пробирается в непослушном нежелательном элементе dmix => ("m" => 2, "kg" => 1, "s" = > -2, "MixHa sh" => 1) - это ошибка, верно. [Я исправил, установив дефляцию по умолчанию на пустое множество ... MixHa sh $ .dmix - это rw = ∅.MixHash;]
  3. Документы https://docs.raku.org/language/setbagmix show (+ ) как мешковатое дополнение, но (-) как набор разностей. Когда я делаю MixHa sh (-) MixHa sh, я, кажется, получаю мешковатое вычитание - это то, что я хочу. Надеюсь, это упущение в документах ??

Дайте мне знать, могу ли я предоставить код или должен сообщить об ошибке ...

1 Ответ

6 голосов
/ 13 апреля 2020
  1. Да, если любая из сторон оператора множества является изменяемой версией, то результатом также должна быть изменяемая версия. Если это не так, это ошибка.

  2. Any - это значение, хотя и неопределенное. Таким образом, правая сторона действует так, как если бы она была Any.MixHash (то есть (Any=>1).MixHash). Так что это не ошибка. Кроме того, вы также можете сказать: has %.dmix is MixHash

  3. Это действительно проблема в документах. Не совсем упущение, но на самом деле ошибка обновления, потому что в более старой реализации операторов множеств это было поведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...