type MyCoolT = StateT MyData1 (ErrorT String (StateT MyData2 IO)) () updateBoth :: (MyData1 -> MyData1) -> (MyData2 -> MyData2) -> MyCoolT updateBoth funOnType1 funOnType2 = do modify funOnType1 lift $ catchError (lift $ modify funOnType2 >> (lift $ print "xe-xe")) (\e -> liftIO $ print "Error! :-)")
updateBoth :: (MyData1 -> MyData1) -> (MyData2 -> MyData2) -> MyCoolT updateBoth funOnType1 funOnType2 = do modify funOnType1 liftState2 $ modify funOnType2
no subject
Date: 2006-12-05 06:16 am (UTC)В данном случае, скорее всего обработка не нужна и у тебя уже будет готовая функция liftState2 = lift . lift, тогда
Примерно так.