2017-04-05 15 views
-3

私はHaskellを初めて使い、anyのように機能する関数を実装する必要がありますが、それはfoldlで実装する必要があります。これは私が今持っているものです。foldlを使用して実装する

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

をチェックアウトすることができます...しかし、それをエコーし​​ません

myAny predicate list = foldl (\acc x -> if predicate x then True else acc) False list 

希望:あなたの関数は、このような何かを見ることができますか?それが立てば、あなたはあなたのためにこれを書く人を求めています。 – Lazersmoke

+0

公平では、しばしばタイプを書く新人にとって、この質問にはすでにこれまでに試されたことが含まれているほど難しいステップです。そのタイプが課題の一部として提供されたのか、解決の一部であるのかはわかりません。 – amalloy

答えて

1

foldlは通常<starting value>accの初期値は、そうあなたのケースでFalseが適当であり得るし、<newAcc>x(Aの評価に基づいて計算されfoldl (\acc x -> <newAcc>) <startingValue> <list>、同様に適用されますリスト要素)とacc(あなたのアキュムレータの現在の値)。最後にアキュムレータが返されます。新しいアキュムレータを計算するには、条件が満たされている場合はTrue、それが満たされていない場合は古いアキュムレータにします。 、あなたがこれまでに試してみました何learn you a Haskell for great good's chapter on this

+0

おそらくそれは拡張子のリストを視覚化するのに役立ちます。だから 'foldl gz'は' [x1、x2、...、xn]という形式のものをとり、 '((z \' g \ 'x1)\' g \ 'x2)を生成する関数です。 。\ 'g \' xn) ' –

関連する問題