はじめに この記事はDenis Shevchenko氏の講演、The Way to Simplicity: How Haskell Simplifies Code Maintenance.を参考に書かせていただきました。 概要 この記事ではHaskellのデザインパターンの1つである幽霊型(Phantom Type)について取り上げたいと思います。 完成したコードはGitHubにもアップロードしているのでそちらも参照してみて下さい。 https://github.com/HirotoShioi/PhantomType 今回はメッセージの暗号及び復号を行うライブラリの開発を行い、開発する上で発生した問題を幽霊型を用いることで如何に解決できるかを紹介します。 初期実装 まずはMessage型を定義しましょう 次にメッセージを暗号化し、それを復号する関数encrypt,decryptを実装しまし
![で、出たー!幽霊型だー!(Phantom Type) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/bdce13f126c6b7e1d252a5ece7f02b14327ce102/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgxJUE3JUUzJTgwJTgxJUU1JTg3JUJBJUUzJTgxJTlGJUUzJTgzJUJDJUVGJUJDJTgxJUU1JUI5JUJEJUU5JTlDJThBJUU1JTlFJThCJUUzJTgxJUEwJUUzJTgzJUJDJUVGJUJDJTgxJTI4UGhhbnRvbSUyMFR5cGUlMjkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTcyNmM0MGQ4MzFmMGM1MzA0NWJhNzdjOTIyMzNjYzg2%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwSGlyb3RvU2hpb2kmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTI5Y2ZkMGM4YTY4MTFlYmZkY2NkNTQ5MDEwN2YzMGI5%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D398662c65ab01d2f1d6cf66963a735a8)