从 stdin 读取

根据 Haskell 2010 语言规范 ,以下是 Prelude 中可用的标准 IO 函数,因此不需要导入它们。

getChar::IO Char - 从 stdin 读取一个 Char

-- MyChar.hs
main = do
  myChar <- getChar
  print myChar

-- In your shell

runhaskell MyChar.hs
a -- you enter a and press enter
'a'  -- the program prints 'a'

getLine::IO String - 从 stdin 读取 String,没有新行字符

Prelude> getLine
Hello there!  -- user enters some text and presses enter
"Hello there!"

read::Read a => String -> a - 将 String 转换为值

Prelude> read "1" :: Int
1
Prelude> read "1" :: Float
1.0
Prelude> read "True" :: Bool
True

其他不太常见的功能是:

  • getContents::IO String - 将所有用户输入作为单个字符串返回,在需要时可以懒惰地读取
  • interact :: (String -> String) -> IO () - 采用 String-> String 类型的函数作为参数。标准输入设备的整个输入作为参数传递给该函数