2017-07-13 10 views

答えて

7

これらの機能は微妙に異なっている:liftは、任意の通常の関数をとりながらbindの下で、機能fは、Result<_>を返さなければなりません。このようなことの

思う:bindは計算の前のチェーンに別の多分に失敗した計算を「アタッチ」:に「普通の」関数の世界から与えられた機能を「運ぶ」

let isOdd x = if x % 2 = 0 then ok x else fail "Even!" 
let x = ok 5 
let oddX = x |> bind isOdd 

liftながら、 Result<_>機能の世界:Elevated World

let plus5 x = x + 5 // plus5 : int -> int 
let liftedPlus5 = lift plus5 // lisftedPlus5 : Result<int,_> -> Result<int,_> 
let seven = liftedPlus5 (ok 2) 

は非常にいいと理解しやすい方法でこれらの事を語る由緒あるスコットWlaschinことで非常に素晴らしい記事があります。私のお気に入りの記事のひとつ。

P.S.(とhereは約1 bindです)申し訳ありませんが、上記の例で小さな間違いが見つかった場合は、今すぐテストするF#環境がありません。

+0

素晴らしい回答、ありがとう! – user3587180

関連する問題