#author("2019-11-23T08:10:49+00:00","default:sagasite","sagasite")
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > [[Elmガイド>Elm_guide]] > [[エラーハンドリング>Elm_guide_Error-Handling]] > Result
#norelated
#contents
//----------------------------------------
*Result [#da21625f]
-Result · An Introduction to Elm https://guide.elm-lang.jp/error_handling/result.html
Elmには様々なデータ構造(型)が用意されており、Maybe型の他にResult型というのが用意されています。
**Result型の定義 [#e2dc56ee]
#code(haskell){{
type Result error value
= Ok value
| Err error
}}
>この型のポイントは、問題が起こったときに問題が起こったということだけではなくさらなる情報を提供できるところにあります。
この情報はエラーを通知したりエラーに対処したりするのにとても役に立ちます。
Maybe型はエラーになったときNothingしか返さないけど、Result型はエラーになったとき細かく制御できる=エラーメッセージを見せることができる、という違いがあるんですね。
**エラーに対処する [#sed08ee1]
>Result型はエラーに対処するのにも役に立ちます。
#code(haskell){{
type Error
= BadUrl String
| Timeout
| NetworkError
| BadStatus Int
| BadBody String
-- Ok "All happy ..." : Result Error String
-- Err Timeout : Result Error String
-- Err NetworkError : Result Error String
}}
**Resultのカスタム型 [#o1e6c023]
ここでElm本の説明を参照してみましょう。
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4863542224/vertex9-22/" target="_blank"><img src="https://images-fe.ssl-images-amazon.com/images/I/51G32HC7rSL._SL160_.jpg" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4863542224/vertex9-22/" target="_blank">基礎からわかる Elm</a><br>鳥居 陽介<br>シーアンドアール研究所<br>2019-02-27<br>¥ 2,840</td></tr></table>
}}
~
(p.91)
>■Result
Resultは失敗するかもしれない結果を表すデータ構造です。Maybeと似ていますが、こちらは失敗の原因を情報として持っています。
Resultはカスタム型で次のように定義されています。
type Result err a = Err err | Ok a