ハスケルのハードディスクから大きなグラフ構造を読みたい。グラフ構造は次のようになります。ハスケル遅延オープンファイルとクローズファイル
すべてのノードが定義持っている - ファイルの子供たちが何であるか記述し、それらがどのように(これらのグラフはData.Serialize
を使用して直列化される接続されているが
すべてのノードは子を持つことができますので、場合。私は(<X>.node
ファイルやディレクトリの形で)A
ノードの子を含むディレクトリA
を持つことができ、ファイルA.node
を持っている。
を私はメモリにハスケルとロードを使用して、このグラフをトラバースすることができるようにしたいとアンシリアライズにのみ必要例えば、もし私が例えばグラフを横切ってA->B->C
(B
がA
などの子)の場合、HaskellはファイルA.node
,A/B.node
およびA/B/C.node
を読み込む必要があります。次回グラフを走査したときに、ファイルはではなく、は既に読み込まれているはずです。
これを行うにはどうすればよいですか?
読み込み中のファイルの内容を遅延させたい場合や、必要なときにのみファイルを開くようにしますか? – bennofs
できるだけファイルを遅く開いて閉じたいです。 –
何をしたいですか?ファイルの内容をキャッシュしますか?つまり、すでにファイルが読み込まれているときにファイルを再度読み込まないでください。あなたがやろうとしていることが私には悪い考えのように聞こえる場合、この種の並べ替えがあります。 [pipes](http://hackage.haskell.org/package/pipe)または[conduit](http://hackage.haskell.org/package/conduit) – bennofs