使用模式匹配,定义一个函数:
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
答案 0 :(得分:1)
这是一个提示。
您可以使用 if-else 语句解决问题:
ifThenElse :: Bool -> Int -> Int -> Int
ifThenElse p x y = if p then x else y
但是,Bool
是枚举类型,只有两个值。您可以将ifThenElse
的参数与Bool
值匹配,并定义在函数获取False
或True
时要执行的操作。它被称为模式匹配:
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`