(ExceptT Error IO Foo)
を(ExceptT Error (StateT Bar IO) Baz)
に「セミリフト」しようとしています。トランススタックの中央にモナドを追加する
私は試しましたlift
、fmap lift
、およびfmap return
、そして何もありません。ここに標準的なイディオムはありますか?
> import Control.Monad.Except
> import Control.Monad.State
> data Error
> data Foo
> data Bar
> data Baz
> x = undefined :: ExceptT Error IO Foo
> y = undefined :: (ExceptT Error (StateT Bar IO) Baz) -> a
> f = ??? -- This is what I'm trying to find.
> :t y (f x)
y (f x) :: a
私は、HTTPS([ 'mapExceptT']あなたが探していると思います。 haskell.org/package/transformers-0.5.4.0/docs/Control-Monad-Trans-Except.html#v:mapExceptT)ですが、具体的な例を追うのは難しいです。 – Alec
[モナド・トランス・スタックの内部を固定するための持ち上げ](https://stackoverflow.com/a/27206159/791604)のポイント(2)も参照してください。多分この質問はその質問と重複しています。 –