1
這是衆所周知的是<-
在do
塊是用於>>=
只是語法糖,但在Haskell的源代碼任意定義<-
或只是句法結構是語言語法的一部分,因此解析器剛用>>=
的適當形式替換每個<-
?哈斯克爾< - 在做記號
這是衆所周知的是<-
在do
塊是用於>>=
只是語法糖,但在Haskell的源代碼任意定義<-
或只是句法結構是語言語法的一部分,因此解析器剛用>>=
的適當形式替換每個<-
?哈斯克爾< - 在做記號
Do表達式是語言的一部分。
從2010年Haskell語言報告:
3.14 Do Expression
lexp → do { stmts } (do expression) stmts → stmt1 … stmtn exp [;] (n ≥ 0) stmt → exp ; | pat <- exp ; | let decls ; | ; (empty statement)
一個做的表達提供 單子編程更傳統的語法。它可以與諸如
putStr "x: " >> getLine >>= \l -> return (words l)
以更傳統的方式書寫的表達式:
do putStr "x: " l <- getLine return (words l)
如做翻譯表示,用let綁定變量的,而那些被定義完全態類型< - 是lambda綁定的,因此是單形的。
參見Haskell語言報告的Do Expression。