Haskell 基于先前结果的函数

Haskell 基于先前结果的函数,haskell,Haskell,我有一个函数,a应该在列表上运行。首先,我必须将列表中的前两个元素与函数进行比较,然后将第三个元素与第一次比较的结果进行比较,依此类推,这样结果就只有一个元素。我觉得我应该使用iterate,但我无法让它工作。我该怎么做 combineOption :: Cell -> Cell -> Cell combineOption 'f' 'f' = 'f' combineOption 'e' 'e' = 'e' combineOption _ _ = 'u' combineRow ::

我有一个函数,a应该在列表上运行。首先,我必须将列表中的前两个元素与函数进行比较,然后将第三个元素与第一次比较的结果进行比较,依此类推,这样结果就只有一个元素。我觉得我应该使用iterate,但我无法让它工作。我该怎么做

combineOption :: Cell -> Cell -> Cell
combineOption 'f' 'f' = 'f'
combineOption 'e' 'e' = 'e'
combineOption _ _ = 'u'

combineRow :: [Cell] -> [Cell] -> [Cell]
combineRow [] [] = []
combineRow l k = [ combineOption (l !! i) (k !! i) | i <- [0..(length(l)-1)] ]

combineLineOptions :: [[Cell]] -> [Cell]
combineLineOptions l = iterate ...                         <==================
combineOption::Cell->Cell->Cell
组合选项“f”“f”=“f”
组合选项“e”“e”=“e”
组合选项uuu='u'
combineRow::[Cell]->[Cell]->[Cell]
组合箭头[][]=[]
combineRow l k=[combineOption(l!!i)(k!!i)| i[单元格]
组合选项l=迭代。。。
有一个函数,a应该在列表上运行。首先,我必须将列表中的前两个元素与函数进行比较,然后将第三个元素与第一次比较的结果进行比较,依此类推,这样结果就只有一个元素

IIUC,这正是它的作用。例如,如果“比较”是差异,那么

Prelude Data.List> let l = [1, 2, 3]
Prelude Data.List> foldl1 (-) l
-4

比较“1”和“2”,然后比较结果是3,所以它是1-2-3=-4。

函数应该做什么?你能提供一个例子吗?它的类型是什么?
iterate
看起来是错误的,但是在不知道函数应该做什么的情况下,很难建议使用什么。它可能是
foldl
scanl
或某个变体。你想比较这四个变量吗h元素与第二次比较的结果,依此类推,最终结果只有一个元素?是的。这正是我想要做的。