输入类型`:: IO a`的函数

时间:2017-09-19 20:53:56

标签: haskell

唯一的"用户输入"我在Prelude return String中知道的函数 - 但经常(我更频繁地说)我们想要读取数字或其他类型。

是否有类型为:: IO a或类似的函数,用于读取任意类型的值?我是searched hoogle这样的功能,但由于它不存在或由于大量其他相似类型的功能,我找不到任何东西。

看起来很有用也很简单,必须有一个内置的。我最接近的是:

-- Eg.
get :: Read a => IO a
get = (liftM read) getLine

main = do
        x <- get
        print $ x + 5

2 个答案:

答案 0 :(得分:5)

readLn

addSubview(descriptionTextView)

descriptionTextView.anchor(top: titleTextField.bottomAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 10, paddingLeft: 20, paddingBottom: 0, paddingRight: 20, width: 0, height: 80)

答案 1 :(得分:1)

值得注意的是readLn调用readIO来提出IO例外而不是未定义。

Prelude> x <- (fmap read getLine) :: IO Integer 
asdf
Prelude> x
*** Exception: Prelude.read: no parse

Prelude> x <- (readIO =<< getLine) :: IO Integer 
asdf
*** Exception: user error (Prelude.readIO: no parse)