我正在编写Haskell,但这可以应用于任何具有ADT概念的OO或函数语言。我将在Haskell中给出模板,忽略算术运算符已被采用的事实:
class Thing a where
(+) :: a -> a -> a
(-) :: a -> a -> a
x - y = x + negate y
(*) :: (RealFrac b) => a -> b -> a
negate :: a -> a
negate x = x * (-1)
基本上这些是可以加减的东西,也可以乘以实际的小数值。一个例子可能是一个简单的数字列表:加法和减法是成对的(在Haskell中,“(+)= zipWith(+)”),乘以实数乘以列表中的每个项目相同的数量。我有足够的其他例子想要将它定义为一个类,但我不确切地知道该怎么称呼它。
在Haskell中,它通常是一个monoid,只要有一些零值。
在代数类型的动物园里,这是一些已知的物体吗?我没有找到它就看过戒指,半环,近似的事件,小组等。