2003-10-09 (Thu)
_ イテレータ(Sather)
イテレータを実装。以下のようなコードが動くようになった。
class MAIN is upto!(once from: INT, once to: INT): INT is i ::= from; loop while!(i <= to); yield i; i := i + 1; end; end; sum!(i: INT): INT is r ::= 0; loop r := r + i; yield r; end; end; product!(i: INT): INT is r ::= 1; loop r := r * i; yield r; end; end; main is sum: INT; product: INT; loop i ::= upto!(1, 10); #OUT + "i=" + i + "\n"; sum := sum!(i); product := product!(i); end; #OUT + "sum=" + sum + "\n"; #OUT + "product=" + product + "\n"; end; end;
実行結果は以下の通り。
i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 sum=55 product=3628800
2004-10-09 (Sat)
_ [ソフトウェア] OpenNETCF.org
.NET Compact FrameworkでSystem.Diagnostics.Process.Startを使おうと 思ったら、そもそもSystem.Diagnostics.Processがなかった。 こんなもんもないのかよ。 どうもP/Invoke(Rubyでいうところのdlみたいなもの)を使わないといけないらしい。
調べてみると、OpenNETCF.orgで提供されているライブラリで提供されている OpenNETCF.Diagnostics.Process.Start が使えそうな感じ。 ライセンスはまだちゃんとみてないけど、ソースも付いてるようだ。 OSD準拠だといいな。
でも、サイズが大きいので、結局P/Invokeを使うことになりそうだ。