私のHaskell *は少しさびているので、明らかなことを見逃していると想像できます。
def any[A](s: Traversable[A], f: A => Boolean): Boolean = {
s.foldLeft(false)((bool, elem) => bool || f(elem))
}
これらのプロパティのいずれかがitに適用されますか?
*実際にはSMLですが、それは99%同じですが、太陽の下では誰にも知られていません。
定義済みで、exists
と呼ばれます。そして、forall
はあなたが探している「すべて」の関数です。
scala> Vector(3, 4, 5).exists(_ % 2 == 0)
res1: Boolean = true
scala> Vector(3, 4, 5).forall(_ % 2 == 0)
res2: Boolean = false
for
(scala.util.control.Breaks
から)を指定したbreak
ループを使用して、パフォーマンスを向上させることができます。 (exists
およびforall
の標準ライブラリ実装を参照してください。)
あたりです。
any
およびall
と同等のメソッドがTraversableトレイトに存在します。
def all[A](xs: Traversable[A], p: A => Boolean): Boolean = xs forall p
def any[A](xs: Traversable[A], p: A => Boolean): Boolean = xs exists p