プログラミングこのDiscourseスレッドがかなり面白かった。Type)を使うと特定の順序でしか型安全に状態遷移できないように実装できると思うんだけど、どうしたらいいかな?」と質問している。Recordを組み合わせて実装することで型安全な状態遷移が作れる。以下のようなゲーム上での状態遷移のパターンが仕様としてあるとしよう。これを実際に今回のパターンで表現すると、このようになる。Transition最も重要な部分は、Transition型が幽霊型として次に遷移する状態の許可レコードのようなものを保持している箇所で、遷移の際に呼び出すtoReadyやtoPlayingなどの関数が引数としてTransitionの保持しているレコードをチェックするようになっている。この実装表現の優れている点は型安全性が高い。Game型を見るだけで「次にどういう状態への遷移が許されているか」がすぐに分かる。状態と遷移のパターンが増えたとしてもGame型を修正するだけでよいので修正範囲が少ない。挙げられ、正直イイことしかない。コードとしても、ある程度Elmに習熟していればさほど難しいものでもなく理解しやすいだろう。Typeなモジュールにでもしてやれば、明示的にLoadingやReadyなどのバリアントを利用できなくなるのでより安全性が増すだろう。型の恩恵を確かめてみる。上の型を操作するにあたって、遷移の関数ではモデルの状態と遷移の組み合わせがほぼ強制される。}試しにLoadingからGameOverに遷移するようなコードに書き換えてみるこれはあってはいけない遷移だ。}コンパイルしてみると、以下のようなエラーになる。case!ellieで実際のコードも用意したので、興味があればどうぞ。Recordを用いて型安全な状態遷移パターンを実装するTweet関連記事2017-10-14SAMパターンの大雑把な理解SAMパターンというのを勉強している。(8)はてなブログをはじめよう!IzumiSyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。