プログラミングElmは静的型付言語なので、型のチカラを活かすことでコンパイラに「あっては行けない状態や組み合わせ」をチェックさせることができる。Type)の記事があるが、もう少し簡単な例を紹介しようと思う。以下は自作のError型を定義した例だ。Error型はカスタムタイプになっていて、エラーのパターンを表現している。msgこのモジュールにはルールがあり、メッセージをStringとして取り出す前には絶対にhandle関数が呼び出される必要がある。Error型を文字列に変換したい(が、コンパイルエラーになる)なぜなら、Errorモジュールの実装によればtoString関数は必ずHandleError型しか受け取れないからだ。HandleError型はhandle関数を呼ばなければ受け取ることができない。以下のようにhandle関数の呼び出しを挟まなければtoString関数は呼び出せない。思う人もいるのは納得できる。上の例で伝えたい点は「型によってモジュールの使い方にルールを与えることができる」という点だ。Error型とは別にHandledError型がモジュールに用意されていることで、モジュール内部でHandledError型をとる関数というのは、必ずhandle関数を経由した上でしか呼ばれないということが自明になる。関数シグニチャを見ることで、その関数がどのようなタイミングで呼ばれるかが分かるようになるし、コンパイラによるチェックも効く。この仕組みをより高度に使った例が幽霊型(ファントムタイプ)だ。実際のプロダクトにおいてどこまで型による制約を設けるかは堅牢性と複雑性のトレードオフになるが、型を自分たちのレールとして使うことの重要性は知っておいて損はない。Recordを用いて型安全な状態遷移パターン...このDiscourseスレッドがかなり面白かった。Elmのはなしで登壇した6/1に開催されたJavaScript祭りというイベントに「jQueryからEl...2017-10-3110月にしたLTまとめ唐突に、この10月にした4つのLTに関して振り返ってみようと思う...2017-10-14SAMパターンの大雑把な理解SAMパターンというのを勉強している。(8)はてなブログをはじめよう!IzumiSyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。