理解Haskell模式匹配

时间:2014-11-12 17:45:06

标签: haskell pattern-matching

使用模式匹配,定义一个函数:

ifThenElse :: Bool -> Int -> Int -> Int

如果条件(第一个参数)为True,则给出第二个参数 如果条件为False,则为第三个参数(例如,ifThenElse (3 > 5) 7 12给出 12)。

我将如何写这篇文章?

这是我到目前为止所做的:

ifThenElse :: Bool -> Int -> Int -> Int

ifThenElse True x1 y1 = x1

ifThenElse False x1 y1 = y1

1 个答案:

答案 0 :(得分:1)

这是一个提示。

您可以使用 if-else 语句解决问题:

ifThenElse :: Bool -> Int -> Int -> Int
ifThenElse p x y = if p then x else y

但是,Bool是枚举类型,只有两个值。您可以将ifThenElse的参数与Bool值匹配,并定义在函数获取FalseTrue时要执行的操作。它被称为模式匹配

ifThenElse :: Bool -> Int -> Int -> Int
ifThenElse False = ...
ifThenElse True  = ...

最后,如果你使用模式匹配,并且在某些情况下结果值不依赖于特定参数,你可以使用占位符隐藏该参数:< / p>

f :: Int -> Int -> Int -> Int
f 0 x y = x + y
f 1 _ y = y -- in case of getting `1` function returns just `y`