1

リストに偶数のみが含まれているかどうかを確認する関数が必要です。そうであれば、それは を返しTrue、そうでなければ -を返しますFalse

私が使いたい関数は //mapfilterfoldrおそらくなしlengthです。

これが私の試みです:

ListOfeven :: [Integral] -> Bool
ListOfeven xs = 
  | foldr (+) True filter odd xs < 0 = True
  | otherwise = False

よりクリーンな方法があると確信しています..ありませんか?:)

4

3 に答える 3

7

最も簡単なのはall、Prelude の関数を使用することです。

evenList = all even

mapfilterおよびのみを使用することを主張する場合foldr:

evenList = foldr (&&) True . map even
于 2012-12-07T14:46:20.670 に答える
5
myfunc = foldr (\a b -> even a && b) True
于 2012-12-07T14:57:06.873 に答える
1

Frerichのソリューションはうまく機能しますが、タッチするだけで最適化できます。

evenList :: [Integer] -> Bool
evenList = foldr ((&&) . even) True

これは、リストを1回だけ実行します。ここでの関数の構成は少し奇妙ですが、そのタイプを調べるとより明確になります。

(&&) . even :: Integral a => a -> Bool -> Bool

単一の引数を取るの結果はeven、演算子の最初の引数にバインドさ&&れます。ここでは、プレフィックス表記で使用されます。

于 2012-12-07T17:38:01.583 に答える