首页 > 解决方案 > Haskell 中 <- 的类型是什么?

问题描述

我有一个工作程序

main = do

  inpStr <- getLine
  putStrLn ( "Hello " ++ inpStr )

在哪里

putStrLn :: String -> IO ()

getLine :: IO String  

由此我可以得出结论,类型<-

IO a -> a

?

标签: haskelltypesmonadsio-monaddo-notation

解决方案


不幸的是,它不是一个常规函数,而是一种语言结构。您只能在do块中使用它来从某些上下文中“提取”值,例如IO.

do块并且<-只是称为Monads 的此类事物的语法糖(并且IO是其中之一)。

还有一些此类上下文的其他示例,您可以将其与doand一起使用<-,例如列表、可选或可为空的值(例如Maybe Int)、有状态计算等。

一些链接:


推荐阅读