【发布时间】:2015-01-17 21:15:21
【问题描述】:
作为一个练习,我正在尝试编写一个行为方式与 foldl 函数相同的函数,并且我也在尝试使用递归。
我的函数将被调用,“leftFolder”,签名看起来像一个 foldl 函数:
leftFolder :: (a -> b -> a) -> a -> [b] -> a
我有点不知道该怎么做,但这是我尝试过的:
leftFolder :: (a -> b -> a) -> a -> [b] -> a
leftFolder [] = []
leftFolder (x:xs) = x (++) (leftFolder xs)
在我看来,这是有道理的。我是说如果列表为空,则返回一个空列表。如果不是,则取列表的头部,然后继续将其附加到尾部。
【问题讨论】:
-
...当你尝试这个时会发生什么? (我怀疑我可以猜测,但您应该将其添加到您的问题中!)
-
"如果列表为空,则返回一个空列表。"但我不想要一个列表,我想选择一个
a! -
回想一下
foldl (+) 2 [3,4,5] = ((2+3)+4)+5。你的leftFolder应该接受多少个参数?
标签: haskell