0
我有一个返回IO X(假设X是特定类型)的函数。其中一个参数是输出目录的路径。如果这不存在,它必须被创建。使用IO()操作,但返回IO X
我想使用createDirectoryIfMissing返回IO(),但我不知道如何保持类型一致。我所做的(和失败)是这样的:
process :: (Mutation a, Show a, Arbitrary a)
=> ((a -> BSL.ByteString),(BS.ByteString -> a))
-> Bool -> FilePath -> String -> String ->
Int -> Int -> FilePath -> FilePath -> IO Result
process (mencode,mdecode) par filename cmd prop maxSuccess maxSize outdir seeds =
let (prog, args) = (Prelude.head spl, Prelude.tail spl)
in (case prop of
"exec" ->
quickCheckWithResult stdArgs { maxSuccess = maxSuccess , maxSize = maxSize, chatty = not par }
(noShrinking $ execprop filename prog args mencode outdir)
"honggfuzz" ->
--do
--createDirectoryIfMissing True outdir (This fails)
quickCheckWithResult stdArgs { maxSuccess = maxSuccess , maxSize = maxSize, chatty = not par }
(noShrinking $ honggprop filename prog args mencode outdir)
_ -> process_custom arbitrary (mencode,mdecode) par filename cmd prop maxSuccess maxSize outdir seeds
) where spl = splitOn " " cmd
quickCheckWithResult ::可测试道具=>参数数量 - >属性 - > IO结果 process_custom是基本相同的过程,但与其他参数
编辑:现在实际的代码,对不起
您没有看到足够的代码来查看您做错了什么。 – dfeuer
请至少为您使用的编译成功的东西提供类型签名,以及您坚持使用的完整代码。 – dfeuer
你的问题不太清楚。你想创建一个目录并在那之后返回一些特定的内容? – wowofbob