2018-04-01から1ヶ月間の記事一覧

F#でコマンドライン引数

F#

コマンドライン引数をパースするライブラリはすでにいくつも存在しますが、今回は簡単なものを実装してみました。簡単のため、ロング名のみ、値は=での指定のみに対応します。 some.exe --enable --value=10 今回実装したものの利用例 コマンドライン引数用…

F# Result型 便利関数

F#

F#4.1で導入されたResult型ですが、導入しやすくするよう幾つか便利関数を定義してみました。随時更新予定です。 Optionから変換 let ofOption (errorValue : 'error) (option : 'a option) : Result<'a, 'error> = if option.IsSome then Ok option.Value e…

レコード型のフィールド隠蔽(F#)

F#

例えば下記のようなCounterクラスを考えます。 type Counter() = let mutable count = 0 member this.CountUp() = count <- count + 1 member this.CountDown() = count <- count - 1 member this.Count = count これをレコード型を用いて実装すると下記のよ…

F#のMailboxProcessorで選択的受信

F#

F#にはアクターモデルを実現できるMailboxProcessorクラスが用意されています。基本的にはキューに積まれたメッセージを順に処理していくものですが、たまに特定のメッセージを先に処理したいときがあります。今回はMailboxProcessorで選択的に受信するよう…