2017-04-05 39 views
-3

我是Haskell的新手,我需要实现一个像any一样工作的函数,但它需要与foldl一起实现。这是我现在有:实现任何使用foldl

myAny :: (a -> Bool) -> [a] -> Bool 
myAny = undefined 
+2

你尝试过这么远吗?就目前而言,你只是要求有人为你写这篇文章。 – Lazersmoke

+0

公平地说,对于一个新来的人来说,经常写这些类型是一个足够艰难的步骤,这个问题已经包含了“到目前为止已经尝试过的东西”。我们不知道该类型是作为任务的一部分提供的,还是解决方案的一部分。 – amalloy

回答

1

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

+0

也许它有助于可视化扩展名列表。所以'foldl gz'是一个函数,它以'[x1,x2,...,xn]'的形式产生'(((z \'g \'x1)\'g \'x2).. 。\'g \'xn)' –

相关问题