コードのさまざまなポイントで一連のGet
モナドを実行しています。それらは によって返されるrunGetState
遅延で実行されます。一連の非常に短い関数を呼び出す関数があり、それぞれが少しの読み取りを行います。ByteString
readFile
main
main
GHCI で実行すると、次のようになります。
<interactive>: too few bytes. Failed reading at byte position 1
それが提供するすべての情報です。2 つの質問があります。
このエラーからさらにデバッグ情報を取得する方法はありますか? どの特定の呼び出しが
runGetState
失敗したかを特定できますか? 行番号は非常に役立ちます。私が得ることができる他のデバッグ情報はありますか?バイト位置 1 で失敗した理由について何か考えはありますか? それはゼロベースですか?つまり、バイト 0 の読み取りに成功しましたが、1 で失敗しましたか、それとも最初のバイトで失敗しましたか? それだけの価値はありますが、私ができる
print theLazyByteString
ことは print33026
です。これは私が期待していたものです。そのため、ファイルは空ではなく、読み取り用に正常に開かれたように見えます。私の推測では、「バイト位置 1」は実際にはファイル自体の初期のポイントを参照するのではなく、runGetState
後で呼び出しの開始点を参照します。