Ger*_*ely 2 monads haskell types do-notation io-monad
我有一个工作程序
main = do
inpStr <- getLine
putStrLn ( "Hello " ++ inpStr )
Run Code Online (Sandbox Code Playgroud)
哪里
putStrLn :: String -> IO ()
Run Code Online (Sandbox Code Playgroud)
和
getLine :: IO String
Run Code Online (Sandbox Code Playgroud)
由此我可以断定的类型<-是
IO a -> a
Run Code Online (Sandbox Code Playgroud)
?
不幸的是,它不是常规功能,而是一种语言构造。您只能在do块中使用它来从某些上下文(例如)中“提取”值IO。
do块,<-并且只是称为Monads 的语法糖(并且IO是其中之一)。
此类上下文还有其他一些示例,您可以将它们与do和一起使用<-,例如列表,可选或可为空的值(例如Maybe Int),有状态计算等。
一些链接: