komorebikoboshiのブログ

プログラミング記事(趣味レベル)が多め。

Seq.existsのお話

えーと、SORAHANEの次回作のティザーサイトが公開されましたね。
SORAHANE -ソラハネ-(リンク先18禁)
とりあえず英語苦手なんで日本語情報を待ちます(お
まだおまけシナリオやり終えてないんだよなあ。
それはおいといて。
F#にはSeq.existsという*1「シーケンスの中に一致する要素があればtrueを返す」関数がありまして。私ずっとそれは

Seq.exists 3 {1 .. 5} (* まちがい *)

という風に調べたい値を直接指定するのだと思ってたんですが、実際のシグネチャ

val exists: predicate:('T -> bool) -> source:seq<'T> -> bool

という風に真偽値を返す関数を指定するんですね。

Seq.exists (fun x -> x = 3) {1 .. 5} (* せいかい *)

えーめんどくさいなー、と思ったんですが、よく考えたら

Seq.exists ((=) 3) {1 .. 5}

これでよかった。*2

*1:List.existsとか他にもいろいろありますがやることは同じ

*2:F#では演算子を()で囲むことで関数扱いできる。で、3を適用してカリー化