Haskell:中止写入文件错误
问题描述:
我有一个程序生成JSON并将其打印到文件。生成JSON的函数在代码生成过程中可能会失败。Haskell:中止写入文件错误
在JSON生成失败的时刻,到此为止生成的代码仍然被写入文件,给我一个不完整/不正确的输出文件。
我想弄清楚如何防止写入错误的输出。喜欢的东西:
main = do
let
output = encodingfunction
print' (Just x) = writeFile "outputfile" output
print' _ = putStrLn "Encoding Failed Miserably"
print' ouput
return()
encodingfunction :: Maybe String
答
你可能想强制返回的字符串的评估,以便编码功能是肯定做了你开始写入文件之前。 Mabye在打印之前可以检查它的长度。
您需要'encodingFunction'来更改,返回'Maybe String'而不是返回可能在某处出现错误的'String'。 – amalloy
@amalloy我对“编码功能”进行了修改,但仍然存在相同的问题。我是否必须将程序中的每个函数都更改为'Maybe'类型? – matthias
正如你所写的,你的代码应该可以工作,尽管你应该在'writeFile'调用中使用'x'而不是'output'。如果你仍然有问题,请制作一个[最小,完整和可验证的例子])http://stackoverflow.com/help/mcve),这样回答者可以看到错误。 – amalloy