唯一的"用户输入"我在Prelude return String
中知道的函数 - 但经常(我更频繁地说)我们想要读取数字或其他类型。
是否有类型为:: IO a
或类似的函数,用于读取任意类型的值?我是searched hoogle这样的功能,但由于它不存在或由于大量其他相似类型的功能,我找不到任何东西。
看起来很有用也很简单,必须有一个内置的。我最接近的是:
-- Eg.
get :: Read a => IO a
get = (liftM read) getLine
main = do
x <- get
print $ x + 5
答案 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)