5
実世界ハスケルは"Transformer stacking order is important"と言っています。しかし、ExceptT (ResourceT m) a
とResourceT (ExceptT m) a
の間に違いがあるかどうかは分かりません。彼らはお互いに干渉しますか?'ExceptT ResourceT'と 'ResourceT ExceptT'
実世界ハスケルは"Transformer stacking order is important"と言っています。しかし、ExceptT (ResourceT m) a
とResourceT (ExceptT m) a
の間に違いがあるかどうかは分かりません。彼らはお互いに干渉しますか?'ExceptT ResourceT'と 'ResourceT ExceptT'
この例では、両方の注文に実際の違いはありません。その理由は:ExceptT
を含む多くの変圧器とは異なり、は “であり、それを適用する基本モナドには”独自の動作を注入しますが、リリース参照を渡すことで全体の動作を開始します。
あなたは(私は簡単のためMaybeT
代わりのExceptT
を参照してくださいよ、彼らは明らかに、この質問の目的のために同等です)タイプを書き出す場合、あなたは基本的に
type MaybeResourceT m a = MaybeT (IORef RelMap -> m a)
= IORef RelMap -> m (Maybe a)
type ResourceMaybeT m a = ResourceT (m (Maybe a))
= IORef RelMap -> m (Maybe a)
すなわちを持っています実際には同等の型です。私はあなたがその操作のためにそれを示すこともできると思います。