Rozważmy niektóre transformatory Monad stos, powiedziećJak widelec wewnątrz transformatora monada
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
...
newtype J = J { runJ :: ErrorT Foo (StateT Bar IO) a } deriving (Applicative, Functor, etc)
a niektóre funkcje J
:
peekNextQuux :: J Quux
peekNextQuux = ...
withJ :: J a -> IO (Either Foo a)
withJ = ...
Potem znalazłem się wewnątrz J
kontekście. Mogę napisać
f = withJ $ peekNextQuux >>= liftIO . print
Teraz chcę zaglądać i quuxes drukowania wewnątrz osobnym wątku wewnątrz J
kontekście
g = withJ . liftIO . forkIO . forever $ peekNextQuux >>= liftIO . print
co oczywiście nie będzie działać. Sądzę, że jest jakiś sposób na rozwiązanie tak prostego problemu, po prostu nie mogę tego rozgryźć.
Dzięki, to zadziałało. –