我想问你是否知道这个函数的作用:
hasUnassigned :: [Int] -> Bool
hasUnassigned board = isJust $ elemIndex 0 board
我在网上找到了这个功能,我打算用它来帮助绘制数独游戏的解决方案。
请你向我解释一下它是如何工作的?
我想问你是否知道这个函数的作用:
hasUnassigned :: [Int] -> Bool
hasUnassigned board = isJust $ elemIndex 0 board
我在网上找到了这个功能,我打算用它来帮助绘制数独游戏的解决方案。
请你向我解释一下它是如何工作的?
elemIndex
在第二个参数中搜索第一个参数,这是一个列表。如果找到元素,则返回 a Maybe Int
-索引,否则返回。Just
Nothing
isJust
Maybe
如果值是 a则返回 true,如果是 a 则返回Just
false Nothing
。
换句话说,这是一个非常尴尬的测试是否board
包含 0 的方法。更好的方法是
hasUnassigned board = 0 `elem` board
elemIndex
有签名a -> [a] -> Maybe Int
。当应用于x
一个列表list
时,它给我们Just i
如果x
第一次出现在list
at 位置i
。如果x
不在 中list
,我们会得到Nothing
。
外部函数 ,isJust
接受 aMaybe a
并告诉我们它的形式是Just whatever
or Nothing
。hasUnassigned
因此检查看板列表中是否有一个0
。