【发布时间】:2013-09-19 01:19:00
【问题描述】:
对于初学者 Haskell 课程中的家庭作业的一部分,我正在尝试编写一个程序,该程序将获取一对布尔值列表,并返回来自带有“&&”的布尔值对的布尔值列表它们之间。比如……
andandbool [(True,True),(True,False),(False,True),(False,False)]
会返回:
[True, False, False, False]
然而,我总是遇到麻烦。我的代码如下所示。
andandbool :: [(Bool,Bool)] -> [Bool]
andandbool [a] = [fst x && snd x | x <- [a]]
当我提供仅包含一对的列表时它工作正常,但当我输入多对列表时报告“函数和布尔型中的非详尽模式”。我是否缺少某种列表理解?任何指向正确方向的指针将不胜感激。
【问题讨论】:
-
考虑
[a]是一个只有一个元素的列表(在你的情况下是一对)。另一方面,任何任意变量,例如a,都可以是任意数量元素的列表... -
将代码中的
[a]替换为as。括号是只包含一个元素的列表的保留语法。 -
非常感谢你们,我从来不知道!很有帮助!
标签: haskell