Haskell:包含其他数据类型的数据类型

时间:2019-01-30 07:18:01

标签: haskell

如果我有两个数据结构

data Tri = Tri {a :: Int, b :: Int , c :: Int} deriving Show
data Quad = Quad {w :: Int, x :: Int, y :: Int, z :: Int} deriving Show

如何创建由这两个组成的另一个数据结构?即:

data Shape = Tri | Quad derivng Show

2 个答案:

答案 0 :(得分:10)

您必须给数据构造函数命名:

data Shape = ShapeTri  { shapeTri  :: Tri }
           | ShapeQuad { shapeQuad :: Quad } 
                 deriving Show

答案 1 :(得分:5)

@talex的答案是正确的。这里有一些变体(主要是语法不同)。

没有记录语法:

data Shape = ShapeTri Tri | ShapeQuad Quad 
  deriving Show

结合使用Shape,Tri和Quad:

data Shape = Tri  {a :: Int, b :: Int , c :: Int} 
           | Quad {w :: Int, x :: Int, y :: Int, z :: Int}
  deriving Show