Абстрация монадской композиции в качестве трансформатора

Извините, если вопрос кажется немного тривиальным ... это не для меня. Я счастливо составил следующий монад:

type SB i a = ReaderT ( AlgRO i ) (State ( AlgState i ) ) a

, который, ну, хорошо себя ведет монад. Readert - это монадский трансформер, и государство является государственным монадом, и ALGRO и ALGSTATE являются параметризованными дататками в i для соревнований и состояния только для чтения соответственно. Теперь, если я хочу сделать из этого аккуратного монадского трансформатора с Newtype, что-то вроде этого:

newtype SbT m i a = SbT {
    runSbT:: m ( SB i a )
}

Как я должен продолжить? Я даже не сможет объединить метод привязки (монадской типекласс), гораздо меньше «подъема» (монадранс) ... Я думаю, что автоматическое вывод может помочь, но я хочу понять, как это работает в этом случае.

заранее спасибо.

5
задан dsign 14 September 2011 в 08:42
поделиться