将函数应用于列表中的列表

use*_*106 0 haskell

我想要一个函数,在列表的每个列表中([[],[],[]])生成元素的总和,如果它甚至添加到该列表0和1,否则.

我试过这个,但它只是对列表的头部正确,我不知道如何对其他人.

 func :: Matrix -> Matrix
 func (Matr size (x:xs))
                |sum(x) `mod` 2 == 0 = (Matr size ((0:x):xs))
                |otherwise = (Matr size ((1:x):xs))
Run Code Online (Sandbox Code Playgroud)

我的尝试:

 [1,1,0,0]
 [1,0,0]
 [1,1,0]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

 [1,1,0,0]
 [1,1,0,0]
 [0,1,1,0]
Run Code Online (Sandbox Code Playgroud)

谢谢.

lef*_*out 6

如果要将相同的操作应用于列表的所有元素,请不要使用显式递归,让我们map为您执行此操作.

func :: Matrix -> Matrix
func (Matr size xs) = Matr size $ map prependParity xs
  where prependParity x
               | even $ sum x  = 0:x
               | otherwise     = 1:x
Run Code Online (Sandbox Code Playgroud)