【发布时间】:2019-05-22 16:46:37
【问题描述】:
我必须了解来自https://wiki.haskell.org/Nonogram的 Ted Yin 的演绎求解器
不知道怎么弄
elim b w ps = filter (\p -> all (\x -> x `elem` p) b &&
all (\x -> x `notElem` p) w) ps
有效。我只知道
all (\x -> x `notElem` [1]) [1,2,3,4]
给出False,和
all (\x -> x `elem` [1]) [1,1,1,1]
给True。
但我不知道要运行所有 elim 函数以及它是如何工作的
【问题讨论】:
-
这里到底有什么不明白的地方?
-
我无法使用任何示例参数来使其正常工作
-
你有没有推导出
elim的类型是什么? -
为了清楚起见,你也可以说
:: (Eq a) => [a] -> [a] -> [[a]] -> [[a]] -
“是的,我想我很清楚过滤器是如何工作的,但我不明白它是如何与 (True) 或 (False) 一起工作的”我不确定你对什么感到困惑。
filter接受一个返回True或False的函数,这就是它知道要过滤什么的方式。如果b中的所有内容都在p中,则表达式为True,并且如果w中的任何内容都在p中,则表达式为True。您正在过滤掉没有通过这两项测试的ps。
标签: function haskell lambda filter higher-order-functions