ProgramJavaScriptAltJSElmElmガイド > カスタム型

カスタム型



一応読んだけど、そういうもんだという表面的な理解しか得られていない。
いまいちよく理解できていない。うまく言語化できないけど、モヤモヤが残るかんじ。
Elm本もパラレル読みして、もう少し掘り下げないといけない。

型の設計

ある状況を非常に厳密に表現し始めるのにカスタム型は極めて強力です。
例えばもし何かデータをロードされるのを待っているとしたら、その状況をこのようにカスタム型で表現したいかもしれません:

#code(haskell){{
type Profile

 = Failure
 | Loading
 | Success { name : String, description : String }

}}
Profile のデータの状態をLoadingから始めて、フェッチに失敗したらFailure、成功したらSuccessというように何が起こったかに応じて状態を遷移させることができます。
このような設計はview関数を書くのを本当にシンプルにします。
データの状態がカスタム型で表現されているのでview関数はデータをロードしているときも常に妥当な見た目を表示することができます。

Note: カスタム型は Elm で最も重要な機能です。
特に一度でもより厳密にシナリオを設計しようとする習慣を持てば、カスタム型に非常に深みを感じるでしょう。
わたしはこの深みを付録の「集合としての型」や「型のビット表現」で共有しようと試みています。

うーん、型は状態を表す仕組みとしても使えるんだな?
これはどういうことなのか?と常に頭の片隅に置きながら、さらにElmガイドを読み進めてみよう。

バリアント

「バリアント」という用語が出てきました。
英語版のElmガイドでは「variant」というスペルでした。

元々の意味は、「変種」とか「多様体」という意味みたいです。
バリエーションという英語もありますね。

ここで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.63)

■シンプルな値の列挙
 最も簡単なカスタム型の例は、考えうるすべての値を列挙したものです。他の言語では「enum(列挙型)」と呼ばれていることもあります。
 たとえば、次のようにして曜日を表すDay型を定義することができます。

type Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun

 それぞれの値はバリアント(Variant)と呼ばれます。バリアント名は大文字から始まるキャメルケースにします。
 列挙された値は、他の型の値と同じように使うことができます。
 最初は混乱する人が多いのですが、Mon、Tueなどは「型」ではなく「値」なので注意してください。

今の段階では、カスタム型やバリアントの使い方が、いまいちピンと来ませんが、とりあえず先に行ってみます。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-11-15 (金) 22:03:53