Jeśli mam stos monad, powiedzmy IO
, State
i Error
i funkcję, która korzysta tylko IO
i Error
. Jak zabrałbyś się za "usunięcie" środkowej monady State
ze stosu, aby móc korzystać z mojej funkcji? Jeśli zamówienie było IO
, Error
, State
, mogę użyć lift
, aby dopasować typy, ale chcę móc korzystać z mojej funkcji, jeśli stos monad zawiera IO
i Error
i ewentualnie inne monady w dowolnej kolejności. Na przykład:Manipulowanie monada stos
fun :: ErrorT String IO()
fun = throwError "error"
someCode :: ErrorT String (StateT Int IO)()
someCode = do
-- I want to use fun here
To jest niesamowite, dzięki! –