我是一个 Haskell 初学者,并陷入了 IO 操作行为。
main() :: IO()
retval = if something
then "foo"
else `return value of IO String action` i.e getLine
print retval
我怎样才能让这段代码工作?
最佳答案
if
的两个分支必须具有相同的类型。自 "foo"
是 String
,else
部分必须是 String
也是(但不是 IO String
)。
你可以做到
retval = if something
then return "foo"
else getLine
为了使if
的所有部分类型 IO String
。在这里,return
转换字符串 "foo"
到IO
只返回 "foo"
的操作.
然后,您需要提取 String
退出IO String
因为print
需要一个字符串(即您执行 IO
操作):
retval <- if something
then return "foo"
else getLine
关于haskell - 处理 IO 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717861/