我有,如IO上下文几个数据类型:转型(一 - > IO b)至10(一 - > B)
a :: IO String
b :: IO FilePath
c :: String -> IO String
欲把它们放在一起在一个数据对象像:
data Configdata = Configdata String FilePath (String -> String)
所以我没有得到自己的每个值了IO方面的,但刚出来的IO Configdata
。
我没有解决方案的关键点是如何将String -> IO String
转换为IO (String -> String)
。 Hoogle不给我任何能够做到这一点的功能。
我不确定它可能是不可能的,因为函数的输入可能是无限的。
有人有解决方案或解释为什么它不可能吗? 我知道使用列表而不是函数是一个选项,但是我希望尽可能使用函数。
这不是真的兼容。在'String - > IO String'中,IO计算可以取决于参数,在'IO(String - > String)'它不能。 – Bergi
@Bergi完美地表达了它。这是Applicative和Monad之间的主要区别。 – user2297560