我想要一个函数,在列表的每个列表中([[],[],[]])生成元素的总和,如果它甚至添加到该列表中的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))
我的尝试:
[1,1,0,0]
[1,0,0]
[1,1,0]
我想要的是什么:
[1,1,0,0]
[1,1,0,0]
[0,1,1,0]
感谢。
答案 0 :(得分: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