Haskell中带参数的函数

时间:2014-04-05 18:17:02

标签: haskell

我试图写一些在haskell中有参数的函数。

例如:我创建了一个包含各种颜色的列表,但我希望该函数只从列表中获取橙色,如何在函数中指定它?

getColor :: a -> a
getColor = orange

1 个答案:

答案 0 :(得分:3)

您需要一个能够获取多种颜色列表并返回单一颜色的功能(可能是您选择的颜色)。您应该从数据类型开始来表示颜色。

data Colour = Red | Orange | Yellow | Green | Blue

现在你想要一个类型为

的函数getColour
getColour :: Colour -> [Colour] -> Colour

获取ColourColour列表,并从列表中选择所需的颜色。但是,列表可以为空,或者列表可能不包含您想要的颜色!在这种情况下getColour会返回什么?

在Haskell中,我们处理的函数可能无法使用Maybe返回结果。新类型的getColour

getColour :: Colour -> [Colour] -> Maybe Colour

这意味着getColour将从列表中返回NothingJust colour colour

最后,我将提到有几种方法可以实际编写getColour的主体,使用模式匹配和显式递归,或者使用Haskell的Prelude中的标准库函数。我假设你是Haskell的新手,所以我推荐前者。这里有一些代码可以帮助您入门:

getColour _      []     = Nothing
getColour colour (x:xs) = ...

这足以帮助您自己撰写getColour吗?