ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。 この記事は次の記事の Python 版です。同じことが出来るはずなので確認したくなりました。 ジェネレーターで関数モナドとStateモナドを模倣してみた 結果的に、ジェネレーターの return の仕様の変遷や、デコレーターが有用なことなどが分かりました。 実装 実装を並べると、関数モナドと State モナドの差分が分かりやすいです。 関数モナド State モナド
![Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/32a993acd728e9dbbfc6c8abc7c73d9c271be654/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-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UHl0aG9uJUUzJTgxJUE3JUUzJTgyJTgyJUUzJTgyJUI4JUUzJTgyJUE3JUUzJTgzJThEJUUzJTgzJUFDJUUzJTgzJUJDJUUzJTgyJUJGJUUzJTgzJUJDJUUzJTgxJUE3JUU5JTk2JUEyJUU2JTk1JUIwJUUzJTgzJUEyJUUzJTgzJThBJUUzJTgzJTg5JUUzJTgxJUE4U3RhdGUlRTMlODMlQTIlRTMlODMlOEElRTMlODMlODklRTMlODIlOTIlRTYlQTglQTElRTUlODAlQTMlRTMlODElOTclRTMlODElQTYlRTMlODElQkYlRTMlODElOUYmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWIxMTU3ZGVhNjk0ZjM2OTQ2Y2I1ZmNjMmE5MzcxOTBi%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwN3NoaSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YzFiYjEwOTA0MWMxYTEzOGJjODI0ZDAyMWVkMmRkYTc%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D42e31056b86d0d0b61ebd687c87dbdf0)