1. (return x) >>= f ≡ f x 2. m >>= return ≡ m 3. (m >>= f) >>= g ≡ m >>= (\x -> f x >>= g) 等号(≡)は置き換え可能であるという意味で読んでください。上から左単位元、右単位元、結合則と呼ばれます。 モナド則が満たされたモナドはプログラマにとって何が嬉しいのでしょうか。 端的に言ったらコードを分割/組み合わせ/抽象化等が出来るため、嬉しいのです。 もう少し言えば、モナド上では自然にプログラミング出来るから嬉しいのです。 もう少し言えば、モナド上でいつも通りエンジニアリング出来るから嬉しいのです。 モナド則のプログラミング上の意義とは、理解してしまうと本当に当たり前になってしまいます。 三日後には嬉しさのことなど忘れてその当たり前のメリットを享受することでしょう。 そうして誰もHaskellのモナド則につ
![モナド則とプログラミング - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/a5e6c3d4e846e80ecf3f2e51c2da6f7de7e62818/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-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgzJUEyJUUzJTgzJThBJUUzJTgzJTg5JUU1JTg5JTg3JUUzJTgxJUE4JUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgyJUIwJUUzJTgzJUE5JUUzJTgzJTlGJUUzJTgzJUIzJUUzJTgyJUIwJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1iNjRlOWQyYmRjZjJkZWJmMmQxY2JiNWMzYWQ2NzRjMw%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwcnVpY2MmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWZmOWE0YTVkOTcwY2Q4ZGFjOGIzYTViZDdmODdmZGY2%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D23896deec314b39b1e9e9c09ed12959a)