2015-08-01から1ヶ月間の記事一覧

F#のWebアプリケーションフレームワーク

F#

http://fsharp.org/guides/web/ に載ってる中でちょっと気になったやつをメモ。 Suave.IOはノンブロッキングでクロスプラットフォーム。ほうほう。結構作りこまれてる様子。 http://suave.io/ type SuaveTask<'a> = Async<'a option> type WebPart = HttpCon…

演算子のオーバーロード #5(完結編)

F#

ちょっと間が空いた。 さて、ここまでを踏まえれば、最初の記事に載せた http://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288 はほぼ理解できる。 組み込みのfloatとユーザー…

演算子のオーバーロード #4

F#

グローバルレベルで定義された演算子が演算子のオーバーロードを隠してしまう。それはわかった。それならそれで、グローバルレベルで定義された演算子は多相(ジェネリック)にできないのだろうか。 結論から言うとできる。ただし気を付けなければならないこ…

演算子のオーバーロード #3

F#

さて、?<-はいったん置いておいて、演算子のオーバーロード解決を勉強した。 F# の演算子定義は2通りのパターンがある。 1つは(C#と同様に)クラスなどのスタティックメンバーとして書くもの。 type MyRecord = { x: int; y: int } with static member (+) (l…

演算子のオーバーロード #2

F#

F#の ?<- 演算子(動的プロパティに値を設定する演算子)はわりとキモいことがわかってきた。 まずはこんな感じでグローバルな演算子を定義してみる。 let (?<-) (d:#IDictionary<'K, 'V>) k v = d.[k] <- v まず、キーとして適当な判別共用体を食わせてみる…

演算子のオーバーロード #1

F#

http://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288 F#の ?<- 演算子は「動的プロパティに値を設定する演算子」なんですが、なんでそれがここに? しかも、 type Overloads =…