私はClojure プログラマ向けのモナドの優れた入門書を読んでいます。この記事では、Identity モナドが Clojure のletと機能的に同等であり、Sequence/List モナドがforと同等であることを示しています。
この記事がモナド変換子に到達すると、Maybe モナドと Sequence モナドを組み合わせた例が示されます。forの代わりに Sequence モナドを使う理由の 1 つは、それを変換できるからです。しかし、Identity モナドを変換することは私には意味がありません。それは、変換するモナドが何であれ、構築することと常に同等ではないでしょうか? たとえば、Maybe を Identity で変換した場合、Maybe が返されるだけでなく、直接宣言する方が簡単でしたか?
Let よりも Identity モナドを選択するために Clojureに実用的な用途があるかどうかを誰かが明確にすることができますか(おそらく、トランスフォーマーの意味を完全に考えているわけではありませんか?)、それとも理論的な完全性のためだけにあるのでしょうか?