Qiita 初投稿です。仲良くしてね (*´σー`)エヘヘ モナド則の解釈に悩む Haskell 初心者の方向けの記事です。 はじめに Haskellに入門すると、すぐにモナドという概念に向き合うことになります。 モナドは純粋関数型言語であるHaskellの中で手続きを扱うための概念であり、モナドを使うと 手続きを記述できる 入出力を伴う処理が書ける 例外処理が書ける 書き換え可能なグローバル変数をエミュレートできる パーサが簡単に書ける などなど、なんだか便利そうです。 そしてモナドを解説する記事や本を読むと、必ず モナド則 という、3つの式からなるモナドの条件が説明されています。 また、自分でモナドを作るときにはこれらのモナド則を満たさなければいけない、とも書かれています。 この記事の目的は、 「これらの式が自作モナドにどんな性質を要求しているのか」 「モナド則を満たすとどんなメリット
![[Haskell]結局、モナド則は何を要求しているのか - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/8bf8f3679012d7d2d512b15a4f122f7ac81ebed5/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMTgwNTgxJTJGcHJvZmlsZS1pbWFnZXMlMkYxNTA3OTQyNTUyP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTQ5ODNlMjg3ODZkOGI0MWZjZGRkZWQ1ZDdmZjc1Nzg1%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253Df12c062366d4f5fbf120f1be2883aacc%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCSGFza2VsbCU1RCVFNyVCNSU5MCVFNSVCMSU4MCVFMyU4MCU4MSVFMyU4MyVBMiVFMyU4MyU4QSVFMyU4MyU4OSVFNSU4OSU4NyVFMyU4MSVBRiVFNCVCRCU5NSVFMyU4MiU5MiVFOCVBNiU4MSVFNiVCMSU4MiVFMyU4MSU5NyVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MiU4QiVFMyU4MSVBRSVFMyU4MSU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTgwNWM0M2UxOTM1ZmVkMjY0Y2ExZjYyYzkxYTVjMjVk%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDB0ZXpjYTY4NiZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTYyMjRiZGI2N2JmMjYwMDllZTQyY2I3ODE2YzJlMTc0%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D424dd786182d606063976a3840ae64b8)