ListT
私は現在、モナド変換子を多用するプロジェクトを書いています。プレーンリストを使用する場合、非決定性の実装は非常に簡単です。ただし、コードをに変換する必要ListT
があると、はるかに複雑になります1。
[a]
簡単な例として、からへの変換には、ListT a
実際には2つの関数を作成する必要があります。
conv :: (Monad m) => [a] -> ListT m a
conv = ListT . return
シンプルですが、まだそこにないのには驚きました。
質問:
- モナド変換子が必要な非決定性を処理するためのより良い方法はありますか?
- リスト間をきれいに行き来するためのテクニック/ライブラリはあり
ListT
ますか?
1正確な理由は非常に複雑なので、あまり詳しく説明したくありません。