我想问一下你是否知道这个功能是做什么的:
hasUnassigned :: [Int] -> Bool
hasUnassigned board = isJust $ elemIndex 0 board
我在网上找到了这个功能,我打算用它来帮助绘制数独游戏解决方案。
请你能告诉我它是如何运作的吗?
答案 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}}。