はlet ra = ResizeArray<int>()
を考える:F#:Seq.forall weirdness?
Seq.forall (fun i ->
let q = i % 2
if 0 = q then ra.Add i
true) <| seq { 1..10 }
私はra.Count
戻り5
、それを行う場合。
Seq.forall (fun i ->
let q = i % 2
if 0 = q then ra.Add i
0 = q) <| seq { 1..10 }
私はra.Count
が0
を返し、それを行う場合。
だから、ラムダ関数のすべての反復が真と評価されない限り、関数内のコードは実質的に実行されません。
ここでは何が起こっているのですか?
[docs](http://msdn.microsoft.com/en-us/library/ee370522.aspx)の引用: "*アプリケーションが' false'を返す場合、全体的な結果は 'false'であり、それ以上はありません* " – ildjarn
forall +副作用は悪い組み合わせです。 –
@MauricioScheffer状況によって異なります。この場合(すなわち、機能の簡単な説明)、それは著しく実用的であった。 – MiloDC