我正试图从我的控制台获取string
或只是char
并存储到变量中。
我试图使用:
> let x = getChar
> x
> c -- for getting a char.
但没有存储(getLine相同)我该怎么办?
答案 0 :(得分:6)
getChar
的类型为IO Char
。它不是返回Char
的函数;它是一个IO动作,在执行时返回Char
。 (虽然很微妙,但这种区别对于理解Haskell如何使用纯函数执行IO至关重要。)
该行
let x = getChar
只需将名称x
绑定到相同的IO操作(您可以通过随后在GHCi中键入:t x
来查看)。键入x
然后执行该操作; GHCI等待你输入一个字符,然后立即返回该字符。
要在程序中使用getChar
,您需要在IO monad中使用它,例如
main = do ch <- getChar
print ch
或
main = getChar >>= print
答案 1 :(得分:2)
这是一个示例
main = do
x <- getLine
putStrLn $ "Here is the string you typed in: " ++ x
答案 2 :(得分:1)
从控制台读取,可能不是很有用。但是,您应该使用<-
构造。
例如(没有"
也很好):
>myString <- getLine
>"Hello world"
或
>myChar <- getChar
>c
有关详情,建议您阅读here
答案 3 :(得分:0)
您需要使用 <-将其绑定到变量,操作的结果将被绑定:
*Main> variable <- getLine
hello
*Main> putStrLn variable
hello
*Main> anotherChar <- getChar
a*Main>
*Main> putChar anotherChar
a*Main>
函数 getLine 的类型为IO String,而 getChar 的类型为IO Char。