我是Haskell的新手,我需要实现一个像any
一样工作的函数,但它需要与foldl
一起实现。这是我现在有:实现任何使用foldl
myAny :: (a -> Bool) -> [a] -> Bool
myAny = undefined
我是Haskell的新手,我需要实现一个像any
一样工作的函数,但它需要与foldl
一起实现。这是我现在有:实现任何使用foldl
myAny :: (a -> Bool) -> [a] -> Bool
myAny = undefined
foldl
通常适用于像foldl (\acc x -> <newAcc>) <startingValue> <list>
,其中<starting value>
是acc
初始值,以便在您的情况False
可能是合适的,<newAcc>
是基于x
评价来计算(一列表元素)和acc
(您的累加器的当前值)。最后,累加器返回。为了计算新的累加器,如果满足条件,则希望它为True
,如果不满足,则为旧累加器。那么你的函数可以是这个样子:
myAny predicate list = foldl (\acc x -> if predicate x then True else acc) False list
希望帮助......但不要只是呼应它,看看learn you a Haskell for great good's chapter on this
也许它有助于可视化扩展名列表。所以'foldl gz'是一个函数,它以'[x1,x2,...,xn]'的形式产生'(((z \'g \'x1)\'g \'x2).. 。\'g \'xn)' –
你尝试过这么远吗?就目前而言,你只是要求有人为你写这篇文章。 – Lazersmoke
公平地说,对于一个新来的人来说,经常写这些类型是一个足够艰难的步骤,这个问题已经包含了“到目前为止已经尝试过的东西”。我们不知道该类型是作为任务的一部分提供的,还是解决方案的一部分。 – amalloy