この記事はC# Advent Calendar 2019の12月5日の記事として書かれました。 この記事はkekyoさんのスライド「C#でわかる こわくないMonad」をモチベーションに書かれています。 kekyoさんのスライドでは、HaskellのMaybeモナド(Optionモナド)に相当するクラスを、まるでHaskellのdo記法のようにC#のクエリ記法で扱う方法が丁寧に紹介されています。本記事ではその他のモナドも同様の手法を用いて実装していきます。 TL; DR C#のクエリ記法でHaskellのモナド & do 記法みたいな機能が実現できるよ! 簡単な実装でそれを実現できるよ! この手法が用いられたプロダクトもあるので紹介するよ! 概要 LINQでおなじみのクエリ記法(from ... in ... select ...)ですが、これを用いてHaskellのモナド&Do記法に近い