2016-09-17 16 views
0

JSONを生成してファイルに出力するプログラムがあります。 JSONを生成する関数は、コード生成の途中で失敗する可能性があります。Haskell:abort writeFile on error

JSON世代でエラーが発生した瞬間、その時点までに生成されたコードはファイルに書き込まれ、不完全/不正な出力ファイルになります。

悪い出力が書き込まれないようにする方法を理解しようとしています。あなたは、ファイルへの書き込みを開始する前に符号化関数が行わ確かにあるように、返される文字列の評価を強制したいかもしれません

main = do 
    let 
    output   = encodingfunction 
    print' (Just x) = writeFile "outputfile" output 
    print' _  = putStrLn "Encoding Failed Miserably" 
    print' ouput 
    return() 

encodingfunction :: Maybe String 
+0

変更するにはencodingFunctionを必要とします。ある時点でエラーを持つ可能性のある 'String'を返すのではなく' Maybe String'を返します。 – amalloy

+0

@amalloy私は 'encodingfunction'を変更しましたが、私はまだ同じ問題があります。自分のプログラム内のすべての関数を 'たぶん'型に変更する必要がありますか? – matthias

+0

あなたの 'writeFile'呼び出しで' output'ではなく 'x'を使用するべきですが、あなたのコードはうまくいくはずです。それでも問題が解決しない場合は、回答者が何が間違っているのかを確認できるように、[最小、完全、かつ検証可能な例])を作成してください。 – amalloy

答えて

0

:ような何か。あなたはそれを印刷する前に長さを確認することができます。