为什么 Ruby 不提供 `Complexe#modulo` 方法?

Why Ruby doesn’t provide a `Complexe#modulo` method?

Ruby 定义 Numeric#%,又名 Numeric#modulo 以提供接收者除以其他数字的剩余部分。但是,正如下面的代码所示,Complex 是唯一没有为其提供方法的派生类型:

ObjectSpace.each_object(Class){p "#{_1}: #{_1.method_defined?(:%)}" if _1.ancestors.include?(Numeric) unless _1 == Numeric}
"Complex: false"
"Rational: true"
"Float: true"
"Integer: true"
"Date::Infinity: true"

是否有数学原因可以避免提供复数提示?在所有情况下,此工程设计选择是否有书面理由?

为 Complex 提供此运算符的实现,强调可能避免的陷阱(如果有的话),这也是受欢迎的,但对于这个问题的主题来说更边缘化。

旁注:这与复杂 modulus 的概念无关,也就是规范,Ruby 标准库中也不存在。

回到 2009 年,在 Bug #1712,Matz 说:

I don't think there's natural definition of modulo on complex numbers, so that we should undefine % method.

因此,Complex 没有 %modulodivmod。 (在 others 中)