まえがきおもいつかなかったなんてそんな!!
概要
- シーケンス Seq<'T> 式
- 前方パイプ演算子
- まとめ
1. シーケンス Seq<'T> 式
Perl やったことある人ならわかると思うけど、F# なら数列生成に 1..10 的なノリでかける。それ以外にも初項 a、公差 d、末項 b のような seq { a..d..b }
という表記もできる。
ちなみにこのシーケンス式は .NET でいう IEnumerable
let seq1 = seq { 1..4 } let seq2 = seq { 1..2..7 } let seq3 = seq { 1..10..31 } [<EntryPoint>] let main args = printfn "%A" seq1 printfn "%A" seq2 printfn "%A" seq3 0
Result
seq [1; 2; 3; 4] seq [1; 3; 5; 7] seq [1; 11; 21; 31]
前回の match - with 文と組み合わせればこんなこともできる。
let seq1 = seq { 1..50 } let seq2 = seq { for i in seq1 -> match i with | _ when i % 3 = 0 && i % 5 = 0 -> "FizzBuzz" | _ when i % 3 = 0 -> "Fizz" | _ when i % 5 = 0 -> "Buzz" | _ -> i.ToString() }
ちなみに for i in fromto do yield ... という表記も可能である。
ここでネタ切れ…
2. 前方パイプ演算子
result |> func
という感じで関数を呼び出せる演算子。流れが書ける。
let x = 1 let double n = 2 * n let triple n = 3 * n
と定義しておき、
let y = x |> double |> triple
とかく。let y2 = triple (double x)
と同義。もちろん後方パイプ演算子もあってそれも同じように動く。
3. まとめ
今回は少しつまらない内容かも… ただ前方パイプ演算子とかいう面白いものも読めるようになった。実はこのパイプ演算子が理解してなくてちょいちょい読みづらいなぁ、って思ってたりしたコードがあったのだけど、理解するとそれほど難しくないなーという感じ。
スクリプトっぽい強さ、それが F# の強みなのかしら? とにかく表現力はすごいなーって思います。次回はなにするかまだ全く考えてないし、もはや 5 日目程度までの内容マスターすれば一通り使えるんじゃないかな? って思ったり。ネタ探し大変… 以上