【发布时间】:2012-09-27 14:14:24
【问题描述】:
如何映射函数以对列表中的列表进行操作? 以下只是我试图做的一个例子,但我只是作为一个一般性问题提出。提前致谢!
现在,我正在尝试将一个函数 change 映射到一个列表的每个列表(由 itrCol xs 返回)。
evalChange xs = map change $ itrCol xs
itrCol 返回一个列表列表,其中每个包含列表都是一列。
itrCol xs = [getCol x xs | x <- (take (width xs) (iterate (\x -> (x + 1)*1) 0))]
getCol 列出列给定的列索引列表
getCol :: Int -> [t] -> [t]
变化是:
change [] = []
change [x] = [x]
change [x,y] = [x,y]
change (x:y:z:ws) | x == y && y == z = 0 : y*(-1) : 0 : change ws
change (x:xs) = x : change xs
【问题讨论】:
-
不要忘记接受您问题的答案 =)(点击答案上的绿色复选图标)
-
您在此处列出的代码是否给您任何错误消息?如果是这样,它们是什么?如果不是,那你到底在问什么?我看到的唯一错误是您使用了
width,而您的意思可能是length?