2016-04-26 2 views
-4
type IM = StateT (EnvFun, EnvEval) (ReaderT EnvEval (ErrorT String IO)) 


i :: Stmts -> IM 
i Statements s (Statements e) = interpeteStmt s >>= \m ... 

И у меня проблема с пониманием. Что такое m. Да, это то, что bind для возвращения монады. Но какая монада «важна». Я не могу просто понять, потому что этот стек монады делает меня troub.eСтол связки и монады

+0

Какой тип 'interpeteStmt'? – Lee

+1

, пожалуйста, не спешите и прочитайте https://stackoverflow.com/help/mcve - у вас есть много вопросов, подобных этому здесь, и вам будет очень полезно узнать, как обеспечить достаточную информацию. – Carsten

ответ

1

m - плохо выбранное имя переменной здесь. Тип >>= - m a -> (a -> m b) -> m b, поэтому переменная m в теле i привязана к значению типа a. Какой тип a зависит от того, что возвращает interpeteStmt.

+0

interpeteStmt возвращает StateT (EnvFun, EnvEval) (ReaderT EnvEval (ErrorT String IO)) – Gilgamesz

Смежные вопросы