定义数据类型并在函数中使用

时间:2015-02-14 21:43:59

标签: haskell

我应该如何定义元组类型Quartet,它将包含四个元素 - 两个Integral和两个Boolean,以及函数firstTwo返回积分表和{ {1}}返回两个布尔人的表?

secondTwo

1 个答案:

答案 0 :(得分:3)

正如您所定义的那样,Quartet值构造函数接受一个参数,这是一个4元组。您也可以这样定义:

data Quartet = Quartet Int Int Bool Bool

它的工作方式几乎相同,只是模式匹配会略有不同。

您还可以为此特定类型的4元组创建类型同义词:

type Quartet = (Int, Int, Bool, Bool)

如果你选择这种最终方法,你的功能就会像你编写它们一样工作,因为在最后一种情况下的模式匹配只不过是与一个普通元组匹配。

但是,如果你使用前两种情况中的任何一种,关键的想法是在你的函数定义中,你必须模式匹配值构造函数,所以你需要包含Quartet值构造函数作为模式:

--firstPair :: Quartet -> [Int, Int]
firstPair (Quartet (a, b, _, _)) = [a, b]

--secondPair :: Quartet -> [Bool, Bool]
secondPair (Quartet (_, _, a, b)) = [a, b]