スタンダードF#ライブラリにオプション(多分)wokflow(monad)はありますか?F#には標準オプションワークフローがありますか?
私はこのワークフローの手作りの実装(1、2)を見つけましたが、実際に非標準で信頼性の低いコードを私のプロジェクトに導入したくありません。そして、googleとmsdnへの想像を絶するすべてのクエリは、私にどこにそれを見つけるかという手がかりを与えませんでした。
スタンダードF#ライブラリにオプション(多分)wokflow(monad)はありますか?F#には標準オプションワークフローがありますか?
私はこのワークフローの手作りの実装(1、2)を見つけましたが、実際に非標準で信頼性の低いコードを私のプロジェクトに導入したくありません。そして、googleとmsdnへの想像を絶するすべてのクエリは、私にどこにそれを見つけるかという手がかりを与えませんでした。
標準のF#ライブラリには多分モナドはありません。かなりの数の有用なモナドを持っている、F#コミュニティの質の高いメンバーによって書かれたF#エクステンションであるFSharpxを見るとよいでしょう。
オプションの標準的な計算ビルダーはありませんが、怠惰のようなもの(リンクした例で追加されたもの)が必要ない場合、コードはそれを信頼しない理由がないほど簡単です(特に、 Option.bind
標準ライブラリの機能)。これはかなり単純な例です:
type OptionBuilder() =
member x.Bind(v,f) = Option.bind f v
member x.Return v = Some v
member x.ReturnFrom o = o
member x.Zero() = None
let opt = OptionBuilder()
これに 'Zero'メソッドを追加すると便利です。' member x.Zero()= None'。 'let thisIsNone = opt {2 + 2 = 5の場合は"不可能が起きました "}' –