2015-08-01から1ヶ月間の記事一覧
http://fsharp.org/guides/web/ に載ってる中でちょっと気になったやつをメモ。 Suave.IOはノンブロッキングでクロスプラットフォーム。ほうほう。結構作りこまれてる様子。 http://suave.io/ type SuaveTask<'a> = Async<'a option> type WebPart = HttpCon…
ちょっと間が空いた。 さて、ここまでを踏まえれば、最初の記事に載せた http://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288 はほぼ理解できる。 組み込みのfloatとユーザー…
グローバルレベルで定義された演算子が演算子のオーバーロードを隠してしまう。それはわかった。それならそれで、グローバルレベルで定義された演算子は多相(ジェネリック)にできないのだろうか。 結論から言うとできる。ただし気を付けなければならないこ…
さて、?<-はいったん置いておいて、演算子のオーバーロード解決を勉強した。 F# の演算子定義は2通りのパターンがある。 1つは(C#と同様に)クラスなどのスタティックメンバーとして書くもの。 type MyRecord = { x: int; y: int } with static member (+) (l…
F#の ?<- 演算子(動的プロパティに値を設定する演算子)はわりとキモいことがわかってきた。 まずはこんな感じでグローバルな演算子を定義してみる。 let (?<-) (d:#IDictionary<'K, 'V>) k v = d.[k] <- v まず、キーとして適当な判別共用体を食わせてみる…
http://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288 F#の ?<- 演算子は「動的プロパティに値を設定する演算子」なんですが、なんでそれがここに? しかも、 type Overloads =…