假设我有一个函数foo :: String -> IO String
向 Web 服务发出请求,下载一些数据,解析它,然后返回一个字符串。我知道 Web 服务将始终返回相同的字符串,给定相同的请求字符串,除非缺少某种类型的 Internet 连接。这些信息是否足以“安全”使用unsafePerformIO
并知道它永远不会引起问题?或者我还必须确保其他一些事情吗?
编辑:我考虑这个的原因是因为我有一个函数deduce :: (String -> String) -> String
,它将输入函数作为参数,并通过用不同的参数评估它来推断函数的一些属性。现在我想推断此 Web 服务的一些属性,但如果没有,unsafePerformIO
我将不得不进行deduce
实质性更改,包括将其类型签名更改为,deduce :: (String -> IO String) -> String
这意味着我需要更改我可能还想推断其属性的所有其他函数。