chessieライブラリを探しています。 Trial.liftとTrial.bind関数が使用されていることがよくあります。私がそれを正しく理解すれば、Trial.liftは関数のパラメータを取り込み、実行結果が成功すればその関数を実行して返します。それが本当であれば、Trial.bindは同じことをしませんか?チェスシーエラー処理のTrial.liftとTrial.bindの違いは何ですか?
4
A
答えて
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#環境がありません。
関連する問題
- 1. モジュール処理とマルチプロセッシングの違いは何ですか?
- 2. ストリーム処理とメッセージ処理の違い
- 3. XMLの "処理命令"と "宣言文"の違いは何ですか?
- 4. スレッド処理中のルーパとwhileループの違いは何ですか?
- 5. LuaとLuaJITがコードを処理する方法の違いは何ですか?
- 6. 固定小数点処理:uint16_tとuint_fast16_tの違いは何ですか?
- 7. 論理SQLと物理SQLの違いは何ですか?
- 8. 設定管理とバージョン管理の違いは何ですか?
- 9. send/sendto/recv/recvfrom関数のエラー処理の違いは何ですか?
- 10. NetweaverとNetweaverの管理者の違いは何ですか?
- 11. Lucee - サーバーとWebの管理ページの違いは何ですか?
- 12. 実行可能なjarライブラリ処理オプションの違いは何ですか?
- 13. 命令レベルの並列処理と並列処理の違い
- 14. C#でデザイナのフォームをダブルクリックすると、イベント処理と関数の違いは何ですか?
- 15. libC++と古いlibstdC++のABIの違いを処理する良い方法は何ですか?
- 16. 論理データモデルと概念データモデルの違いは何ですか?
- 17. SQL Server管理者とsysadmin/serveradminの違いは何ですか?
- 18. 管理DLLとアンマネージDLLの違いは何ですか
- 19. TPLとasync/await(スレッド処理)の違い
- 20. テキスト分析対自然言語処理違いは何ですか?
- 21. Xcodeプロジェクトとプレイグラウンドの違いによるスウィフトエラー処理の違い
- 22. マシンの処理可能とマシンの違いを理解する
- 23. Nhibernateの処理方法の違いは何ですか?FirstOrDefaultと.SingleOrDefault?可能性のあるバグ?
- 24. $と$$の違いは何ですか?
- 25. `##`と `hashCode`の違いは何ですか?
- 26. typedefとの違いは何ですか?
- 27. NodeJS:「./ ..」と「..」の違いは何ですか?
- 28. {}())と{})の違いは何ですか?
- 29. `&`と `ref`の違いは何ですか?
- 30. `==`と `is`の違いは何ですか?
素晴らしい回答、ありがとう! – user3587180