Haskel の Maybe-idiom を適用する方法を理解しようとしています.. http://en.wikibooks.org/wiki/Haskell/Understanding_monads/Maybe を読んでいます。Maybe
この値が>>=
演算子を介して伝播すること。
URL の例:
次に、政府データベースのルックアップの結果を 3 回目のルックアップで使用したい場合 (たとえば、登録番号を調べて、自動車税がかかっているかどうかを確認したい場合)、getRegistrationNumber 関数を拡張できます。
getTaxOwed :: String -- their name
-> Maybe Double -- the amount of tax they owe
getTaxOwed name =
lookup name phonebook >>=
(\number -> lookup number governmentalDatabase) >>=
(\registration -> lookup registration taxDatabase)
または、do-block スタイルを使用します。
getTaxOwed name = do
number <- lookup name phonebook
registration <- lookup number governmentalDatabase
lookup registration taxDatabase
質問:
エラーハンドリングはどのように処理すればよいですか? ほとんどのコードは、どこで問題が発生したかを知ることで恩恵を受けると思います。「電話帳にも政府データベースにも John Doe が見つからなかった」と報告するだけでなく、どのリソースに問題があったかを報告する必要があります。