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


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

而且我有一个理解问题。什么是m。是的,这是,monad返回。但是哪个monad“重要”。我不能理解,因为这个monad栈让我很烦恼.e绑定和monad堆栈

+0

'interpeteStmt'类型是什么? – Lee

+1

请花点时间阅读https://stackoverflow.com/help/mcve - 这里有很多类似的问题,并且所有人都将从您学习如何提供足够的信息中受益匪浅 – Carsten

回答

1

m这里是一个很差的变量名。 >>=的类型为m a -> (a -> m b) -> m b,因此i正文中的变量m绑定到类型为a的值。什么类型的a取决于什么interpeteStmt返回。

+0

interpeteStmt返回StateT(EnvFun,EnvEval)( ReaderT EnvEval(ErrorT字符串IO)) – Gilgamesz