2016-04-26 69 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