我试图写一些在haskell中有参数的函数。
例如:我创建了一个包含各种颜色的列表,但我希望该函数只从列表中获取橙色,如何在函数中指定它?
getColor :: a -> a
getColor = orange
答案 0 :(得分:3)
您需要一个能够获取多种颜色列表并返回单一颜色的功能(可能是您选择的颜色)。您应该从数据类型开始来表示颜色。
data Colour = Red | Orange | Yellow | Green | Blue
现在你想要一个类型为
的函数getColour
getColour :: Colour -> [Colour] -> Colour
获取Colour
和Colour
列表,并从列表中选择所需的颜色。但是,列表可以为空,或者列表可能不包含您想要的颜色!在这种情况下getColour
会返回什么?
在Haskell中,我们处理的函数可能无法使用Maybe
返回结果。新类型的getColour
是
getColour :: Colour -> [Colour] -> Maybe Colour
这意味着getColour
将从列表中返回Nothing
或Just colour
colour
。
最后,我将提到有几种方法可以实际编写getColour
的主体,使用模式匹配和显式递归,或者使用Haskell的Prelude
中的标准库函数。我假设你是Haskell的新手,所以我推荐前者。这里有一些代码可以帮助您入门:
getColour _ [] = Nothing
getColour colour (x:xs) = ...
这足以帮助您自己撰写getColour
吗?