我对 Haskell 比较陌生,我目前正在使用 LearnYouAHaskell。我正在尝试获取一个由空格分隔的字符串,并将其分解为一个较小的字符串列表。我目前的程序:
main = do
putStrLn "Insert a string to convert: "
-- Input string
line <- getLine
words line;
但在这种情况下,它告诉我我遇到了 IO 错误。据我了解,getLine 是一个动作,所以由于这是不纯的,我必须将它绑定到“line”。Line 是 getLine 的准确表示,它是一个 IO String。
但是, line 不应该是字符串吗?当我尝试在线使用单词时,它告诉我“无法将预期类型“IO a0”与实际类型 [String] 匹配
好像 line 不是字符串。此外,我可以在程序本身中使用 :t 行来查看它是否是正确的类型吗?
我为新手问题道歉,但我有点卡住了。
编辑:
我在 GHCI 中做了类似的事情,它告诉我我的类型实际上是一个普通的字符串。我不明白。
Prelude> line <- getLine
"Hello fellows"
Prelude> :t line
line :: String
Prelude> words line
["Hello","fellows"]
为什么那行不通?