haskell - 如何在 haskell 中使用 getLine 或 getChar ?

标签 haskell

我正在尝试从控制台获取一个字符串或只是一个字符并将其存储到变量中。

我尝试使用:

> 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/

相关文章:

algorithm - haskell快速排序复杂度?

Haskell 类型族和虚拟参数

haskell - 在 Haskell 中切换实例声明的参数顺序

haskell - 转换具有两个以上 Action 的 "do"表示法以使用绑定(bind)函数

haskell - 使用 TypeLits 追加类型级编号列表

haskell - 避免 Haskell 中的 namespace 污染

haskell - 无法将预期类型 `a' 与实际类型 `[a]' 匹配

parsing - 如何从 Parsec 中的 optional 解析器中检索值?

haskell - 将函数组合成另一个函数

haskell - 有没有某种方法可以在 haskell 中定义一个环绕的枚举?