这个抽象数据类型叫什么?

Pau*_*son 3 haskell abstract-data-type

我正在编写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)
Run Code Online (Sandbox Code Playgroud)

基本上这些是可以加上和减去的东西,也可以乘以实际的小数值.一个例子可能是一个简单的数字列表:加法和减法是成对的(在Haskell中,"(+)= zipWith(+)"),乘以实数乘以列表中的每个项目相同的数量.我有足够的其他例子想要将它定义为一个类,但我不知道究竟该怎么称呼它.

在Haskell中,它通常是一个monoid,只要有一些零值.

在代数类型的动物园里,这是一些已知的物体吗?我没有找到戒指,半环,近似,群体等.

scl*_*clv 9

这是一个向量空间:http://en.wikipedia.org/wiki/Vector_space.你有加法和标量乘法.

  • 另外,如果Haskell是您正在编写的语言(并且您不介意使用语言扩展),那么Hackage上的一个很好的库叫做"向量空间",它已经有了一个类. (2认同)