我有以下代码:
import Control.Monad
import Control.Monad.Trans
import Control.Monad.Trans.State
type T = StateT Int IO Int
someMaybe = Just 3
f :: T
f = do
x <- get
val <- lift $ do
val <- someMaybe
-- more code in Maybe monad
-- return 4
return 3
Run Code Online (Sandbox Code Playgroud)
当我使用do内部符号在Maybemonad中工作时,它会失败.从它给出的错误看起来像这样的类型签名do不匹配.但是我不知道如何解决它.我尝试了一些lift组合,但没有一个工作,我不想再猜测了.