for...to式
Midoliy|F#プログラミング

for...to式の概要
サンプルでみるfor...to式

for...to式の概要


 for...to式は、指定された整数の範囲値に渡って反復処理をさせたい場合に使用されます。ループカウンタの値は、反復のたびに値が「増加(-> to)」または「減少(-> downto)」していきます。
 このループ構造は命令型言語では最もポピュラーな反復処理で、C#でいうところの「for文」と対応しています。ただし、for...in式 でも同等の処理が実現できるため、F#での利用頻度はそれほど高くないでしょう。
// ------------------
// [ 構文 ]
// ------------------

for identifier = start [ to | downto ] finish do
    body-expression
                

 for...to式では、コレクション(= enumerable-expression)の要素を一つずつ取り出し、その値をパターン値(= pattern)に束縛します。body-expression には、束縛したパターン値を利用した '処理の実体' を記述することができます。ただし、コレクション全体に対する単なる反復処理だけでなく、コレクションに対するパターンマッチングもサポートされている点が異なります。
 for...to式の enumerable-expression には、列挙可能なコレクションとして、 ..演算子(範囲演算子) を利用して作成した整数型の範囲値も指定することが可能です。また、その他にも System.Collections.IEnumerableを実装している型であれば、自作のコレクションでも for...to式 を利用することができます。

 ..演算子を使用して範囲を表現するときは、以下のように指定することができます。
start..finish
    ex) for i in 0..10 do printf "%d " i
    // output: 0 1 2 3 4 5 6 7 8 9 10

 また、次のコードのように、スキップと呼ばれる増分を含む定義の方法もあります。
start..skip..finish
    ex) for i in 0..2..10 do printf "%d " i
    // output: 0 2 4 6 8 10

 整数範囲にskipがない単純なパターンの場合、カウンタ値(今回の場合は i )は反復ごとに 1ずつ 増えていきます。skipが指定されている場合、反復ごとにそのskip値の分だけカウンタ値が増えていきます。
 カウンタ値の型は、開始式と終了式の型から推測されます。ただし、これらの式の型は32bit整数でなければならないことに注意が必要です。


サンプルでみるfor...to式


 以下は簡単な for...to式 の使い方のサンプルになります。