東京F#読書会第1回に参加してきました
読書会だというのに本を読まず基本的に雑談?していました。
非常におもしろかったです。第2回もあるとうれしいです!
で、自分が話題にしたことの補足をまとめておきます。
F#でO/Rマッパーつくりました
Option型のNoneは内部的にはnullと同じ
- コンソールに出力されるとnullになる。
- パフォーマンス向上のために意図的にそういう実装になっているみたい。
- nullと比較するとtrueになる
- 普通には型が異なるので比較できないですね。でもboxingしてからなら比較できました。
let none : string option = None printfn "%b" ((box none) = null) // true
ある程度の規模になってくるとクラスを使ったほうが楽かも?
プログラミングF#の p.189 の 「7.3.1 モジュールからクラスへの変換」あたりの話。
MaybeやStateなど代表的なMonadを提供するF#のライブラリがある
NuGetからもGetできます。