我正在尝试从控制台获取一个字符串
或只是一个字符
并将其存储到变量中。
我尝试使用:
> let x = getChar
> x
> c -- for getting a char.
但是没有存储任何内容(与 getLine 相同)我该怎么办?
最佳答案
getChar
的类型是IO Char
。它不是一个返回 Char
的函数;它是一个 IO 操作,执行时返回一个 Char
。 (虽然很微妙,但这种区别对于理解 Haskell 如何使用纯函数执行 IO 至关重要。)
线路
let x = getChar
只是将名称 x
绑定(bind)到相同的 IO 操作(您可以通过随后在 GHCi 中键入 :t x
来查看)。输入 x
然后执行该操作; GHCI 等待您输入一个字符,然后立即返回该字符。
要在程序中使用 getChar
,您需要在 IO monad 中使用它,例如
main = do ch <- getChar
print ch
或
main = getChar >>= print
关于haskell - 如何在 haskell 中使用 getLine 或 getChar ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144229/