【发布时间】:2011-08-22 08:12:18
【问题描述】:
我在将 IO String() 转换为 String() 时遇到问题 下面是评估表达式的函数。
foobar :: String -> IO String
eval :: String -> Sh () ()
eval x = do
s <- foobar x
shellPutStrLn $ s
这不起作用,因为 eval 返回 IO String 而不是 Sh。这 在某个函数内完成一些 IO 并将其转换/污染为 IO 字符串。 如何防止转换或将 IO 字符串转换为字符串?
【问题讨论】:
-
IO String() 是什么意思?如果您的意思是
IO String (),那不是有效类型,String()也不是。 -
您是否正在尝试做类似于donsbot.wordpress.com/2010/08/17/practical-haskell 的事情?
-
重复Converting IO Int to Int 和stackoverflow.com/questions/1675366/… 以及其他一百个类似问题。请使用搜索
-
@Landei - 标题相似,但问题的上下文不同,解决方案也不同。我认为您链接到的任何一个问题都不适合作为重复项。虽然这可能是一个单子变压器问题的重复......
-
在 Math.SE 上,他们有一种叫做“抽象重复”的东西,用于这种几乎但不完全的重复。