ページ

2010年7月11日日曜日

変態的な for コマンド

for コマンドを使ったことはありますが?

DOS Batchで使われるコマンドの中ではこれはトップクラスに変態的なコマンドではないかと思われます。

for って実はラムダ式?

forは繰り返しを指定する部分と、繰り返されるアクション部から構成されます。繰り返しの指定部分は、まあ多少変程度。繰り返しを受ける変数がアルファベット1文字に限定される、という制限があるぐらいです。これは、記述上は変数に見えますが、実体としてはfor文の構成要素として使われるものであって、通常の変数として扱うことはできません。その代わり、この変数に対しては、他では見られないような特別な演算が(アクション部で参照する場合に)定義されています。

どうも、この変数、意味合いとしては、C#のラムダ式での変数に近いかと思われます。変数は、例えばイテレーションの一つが評価される時点でイテレーションの値にバインドされて式が評価されることになります。というか、変数だけでなく、forコマンドそのものがラムダ式ではないかと思えます。forコマンドがラムダ式あると見なすと変態的な動作をする訳が理解できてきます。

for文の%%iはイテレーションの項目を示すものであって、変数ではありません。従って、後続するアルファベットで後続する項目を示すのもあり、になります。アクション部で多様な参照があるのも、変数ではないからです。そして、アクション部での外部変数への参照が、for文出現時の値に固定されるのも、ラムダ式として評価された時点での値になっているのだと考えれば(それなりに)納得できます。

でも、相当に変態的だと思いますがね。

0 件のコメント:

コメントを投稿