Haskell嵌套列表

Haskell嵌套列表,haskell,nested-lists,Haskell,Nested Lists,我是haskell编程的新手,我正在尝试检查嵌套列表中对角相邻的元素是否彼此为负。 我的职能是: checkNegation :: [[Int]] -> Bool 示例:checkNegation[[1,2],[3,-1]]将返回False checkNegation[[1,2],-1,3]]将返回True。我建议将问题分解为多个步骤 步骤1:编写一个函数以获取对角线元素: diag :: [[a]] -> [a] 你可能会觉得有用 步骤2:检查结果列表中的相邻元素是否相互为负数

我是haskell编程的新手,我正在尝试检查嵌套列表中对角相邻的元素是否彼此为负。 我的职能是:

checkNegation :: [[Int]] -> Bool
示例:checkNegation[[1,2],[3,-1]]将返回False
checkNegation[[1,2],-1,3]]将返回True。

我建议将问题分解为多个步骤

步骤1:编写一个函数以获取对角线元素:

diag :: [[a]] -> [a]
你可能会觉得有用

步骤2:检查结果列表中的相邻元素是否相互为负数:

allAdjNeg :: [Int] -> Bool
其中allAdjNeg[-1,1,-1,1]=真

这也可能是最容易分步骤完成的。在步骤2a中,检查每对相邻元件。您可以将答案改写为编写函数:

adjNeg :: [Int] -> [Bool]
提示:如果您定义一个函数isNeg x y=x==-y,这是一个类似于-的二进制运算符,可以以同样的方式与zipWith一起使用

在步骤2b中,您希望查看adjNeg返回的列表[Bool]是否全部为真。and::[Bool]->Bool函数在这里很有用。这应该允许您定义allAdjNeg

然后,您的最终函数将类似于:

checkNegation :: [[Int]] -> Bool
checkNegation lsts = not (allAdjNeg (diag lsts))

你试了什么?什么不起作用?我的函数是-,这不是一个实际的函数,这是函数的类型,函数的声明。你的问题是什么?我不想要对角线元素。它应该包括所有对角相邻的元素。与矩形列表一样,索引0,1将与1,2和1,0FYI相邻。我已经发布了a,包括OP的澄清。发表新帖子是因为它在某种程度上使这个答案无效。@AditiJain:你能公平地尝试并用关于为什么这个尝试不起作用的具体问题编辑你的问题吗?@AditiJain如果你确实提出了一些代码并对此有疑问,请发表一个新的问题,包括一个关于背景的链接;请不要进行会使现有答案无效的编辑。