我浏览了页面卷曲的内容。找到正确的数据并在其基础上形成以下查询。
但数据类型为IO [String]
。简单地请求String
。
如何将IO [String]
转换为String
?
答案 0 :(得分:5)
答案 1 :(得分:0)
这是邪恶的(你没有从我这里听到这个消息!)但是:unsafePerformIO。
我只是谈论类型系统。如果您想使用它,请仔细阅读文档 ! 顾名思义,这是不安全的,这意味着你可以更加确定你的使用是否合理。
答案 2 :(得分:0)
您可以使用unsafePerformIO
(其类型为IO a -> a
,因此不纯),但这几乎肯定不是您想要的。相反,您可以使用fmap
或>>=
对字符串执行操作:
f :: String -> Int
f = read
io :: IO String
io = getLine
main :: IO ()
main = (f `fmap` io) >>= \x -> print x
对于某些fmap
,>>=
和IO a
的结果当然始终是a
,以保持参照透明度。