4

我想问你是否知道这个函数的作用:

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

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

请你向我解释一下它是如何工作的?

4

2 回答 2

11

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

isJustMaybe如果值是 a则返回 true,如果是 a 则返回Justfalse Nothing

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

hasUnassigned board = 0 `elem` board
于 2013-06-13T15:11:08.987 回答
2

elemIndex有签名a -> [a] -> Maybe Int。当应用于x一个列表list时,它给我们Just i如果x第一次出现在listat 位置i。如果x不在 中list,我们会得到Nothing

外部函数 ,isJust接受 aMaybe a并告诉我们它的形式是Just whateveror NothinghasUnassigned因此检查看板列表中是否有一个0

于 2013-06-13T15:11:41.890 回答