Month of 8月, 2009

解決はしたけれど...納得にはまだまだ遠い! だけど、先に進むよ。

in

昨日(前エントリ)の続き。いろいろ試した結果

p = item Main.>>= \x ->
    item Main.>>= \y ->
    item Main.>>= \z ->
    Main.return (x,z)

で、いけました。「Programming in Haskell]Chapter 8.4(p77)には、

p1 >>= \v1 ->
p2 >>= \v2 ->
:
pn >>= \vn ->
return (f v1 v2 .. vn)

p = do v1 <- p1
       v2 <- p2
       :
       vn <- pn
       return (f v1 v2 .. vn)

は同等だよって書いてあるのでいいとは思うのですが、同じならなんでdo式を使うとエラーになるんだ?と考えてみると、昨日は関係ないかとも思ったのですが、やっぱり怪しいのは(>>=)。

Programming in Haskell Chapter 8 で躓く

in

どうにかこうにか読み進めてきた「Programing in Haskell」Chapter8 8.4 Sequencingで躓いてます。文字列の1番目と3番目の文字でペアを作成するというサンプルなんですがうまくいきません。実行例は次の通りです。

> parse p "abcdef"
[(('a','c'),"def")]

本書で、示されている定義は(前段からの続きも含めて)次のようになっています。

.NET/C#の1ヶ月

開発環境をVC++/MFCから.Net/C#へ移行して約1ヶ月、とりあえずAccess2000で作成されたレガシーアプリの移行を1本終えました。

前にもかきましたが.NET/C#への移行は、Windowsの開発環境が.Net中心へと傾きつつある今、VC++/MFC自体がレガシー環境になることへの不安が大きな理由なんですが、もう1つ実際的な理由として、山ほどあるレガシーアプリの書き換えにVC++/MFCでは時間がかかりすぎるという側面をもっていたからです。なので移行1本目のプログラムがどの程度の時間で実装できるのかはわりと気にしていたのですが、雑務をこなしながらゼロから始めたにしては良いペースではないかと思います。

ポイントとしては、VC++/MFCではいまひとつFlexGridコントロールとの距離があったため、Listコントロールを使うことが多かったのですが、.NET/C#に移行したおかげで、やたら便利なDataGridViewといコントロールを使えるようになったことがあります。VC++/MFCでもどうしてもというときはFlexGridを使っていたのですがDataGridViewにしたらもう戻れませんね。もう1つは、これまでなんとなく敬遠していたクリスタルレポートを導入したことで、これまでも帳票関係は自分では色々工夫はしていたのですが、なにしろ手間ばっかかかる上プログラミングしててもとしては全然面白くないのが悩みのタネだったで、思い切ってCrystal Reportsを導入してみたのですが(面白くないことは変わらないモノの)手間は幾分か減った気がします。

とにかく全体的にVC++/MFCよりは生産性は高いなぁというのがこの1ヶ月の感想。まだまだC#の深淵に触れたわけではないのですが、感覚的にはもうVBに近い感じがしました。

ところで、クリスタルレポートでデータソースを指定して印字するサンプルはいくつも見つかったのですが、データソースに加えて、UnboundFieldも組み合わせて印字するというサンプルが意外に見つからなかったのでメモしておきます。探し方が悪かったのか、ヒントばっかりでねぇ。ズバってのがなかなか探せませんでした。:-)

my_report mr = new my_report();
FormulaFieldDefinition us1 = mr.DataDefinition.FormulaFields["UnboundString1"];
us1.Text = "\"" + myUnboundsString.Text + "\"";
mr.SetDataSource(my_dataSet);

テキストをダブルクォートで囲まないといけないのがミソですかね。

プログラミングマップを書いてみた

マインドマップ作成ソフト SimpleMindXがなかなか良い出来です。巷数間円からするマインドマップ作成ソフトがありますがわざわざパソコンの前まで言ってうんうん言いながらマップ作成するより、その場その時iPhoneでサクっと書いてみるのが快適です。しかも無料だし。

操作性を試そうとおもってマインドマップじゃないけれど僕のプログラミングライフを書いてみました。

マップ1

プログラマはやっぱり英語には慣れていたほうがイイという話

あいかわらずHaskellの勉強中です。使用しているテキストはProgramming in Haskellです。これまでにもC/C++やObjective-Cなんかを洋書で勉強したことは多々あって、その場合は対象となるプログラミング言語を知っているのでなんとか読み進めることができたのですが、今はHaskellという言語自体を勉強するというところからのスタートなので歩みは遅いです。