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