What's New for D 0.165
Aug 20, 2006
New/Changed Features
- Added implicit conversion of expressions to delegates.
「すべての言語は Lisp に通ず」ってか?
D言語がどんどん関数型言語っぽくなっていきますな.
でも遅延評価のことはまだよくわかってない.
今回の更新の周辺をまとめるとこんな感じ?
import std.cstream;
void dotimes(int n, void delegate() exp)
{
for (int i = 0; i < n; ++i)
{
exp();
}
}
void main()
{
// dmd 0.164 以前
// 無名delegate
dotimes( 3, delegate void() { dout.writef("Hoge "); } );
dout.writefln();
// 無名delegate+返値型の自動推論
dotimes( 3, delegate() { dout.writef("Fuga "); } );
dout.writefln();
// lambda delegate(delegateキーワード省略+無名delegate+返値型の自動推論)
dotimes( 3, { dout.writef("Foo "); } );
dout.writefln();
// dmd 0.165 以降
// 遅延評価(式からdelegateへの暗黙変換+lambda delegate)
dotimes( 3, dout.writef("Bar "));
dout.writefln();
}// 出力
// --
// Hoge Hoge Hoge
// Fuga Fuga Fuga
// Foo Foo Foo
// Bar Bar Bar
やっていることは全部同じで書き方が違うだけ.