代码之家  ›  专栏  ›  技术社区  ›  Paul Johnson

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

  •  3
  • Paul Johnson  · 技术社区  · 14 年前

    我在写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中,它通常是一个幺半群,只要存在某种零值。

    这是代数类型动物园里已知的一类物体吗?我看过环、半环、近半环、群等,但没有找到。

    1 回复  |  直到 14 年前
        1
  •  9
  •   sclv    14 年前

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

    推荐文章