这个Haskell Data.Maybe函数有什么作用?

时间:2013-06-13 15:05:30

标签: haskell

我想问一下你是否知道这个功能是做什么的:

hasUnassigned :: [Int] -> Bool
hasUnassigned board = isJust $ elemIndex 0 board

我在网上找到了这个功能,我打算用它来帮助绘制数独游戏解决方案。

请你能告诉我它是如何运作的吗?

2 个答案:

答案 0 :(得分:11)

elemIndex在第二个参数中搜索第一个参数,这是一个列表。如果找到该元素,则返回Maybe Int - Just索引,否则返回Nothing

如果isJust值为Maybe,则

Just会返回true,如果是Nothing,则返回false。

换句话说,这是一种测试board是否包含0的非常尴尬的方法。更好的方法是

hasUnassigned board = 0 `elem` board

答案 1 :(得分:2)

elemIndex有签名a -> [a] -> Maybe Int。当应用于x和列表list时,如果Just i首次出现在x位置list,则会向我们i提供x。如果list不在Nothing,我们会改为isJust

外部函数Maybe a采用Just whatever并告诉我们它是Nothing还是hasUnassigned的形式。 0因此检查董事会名单中是否有{{1}}。