私は別の(第三者)バイナリを実行する必要があるHaskellプログラムを持っています。このバイナリは、その出力をコマンドライン引数として提供されるファイルに書き込みます(STDOUTに書き込むつもりはありません)。私はSystem.Cmdでこのバイナリを呼び出すことができますが、withTemporaryDirectoryの型にはかなり不思議です。すなわち:System.Cmd一方Haskellで一時ディレクトリを使用するサブプロセスを実行するにはどうすればよいですか?
withTemporaryDirectory :: FilePath -> (FilePath -> IO a) -> IO a
は、単に私を与える:
rawSystem :: String -> [String] -> IO ExitCode
(ここで有用変わらないだけでなく、システムを)。
私はちょうどこれらを結ぶ方法を考え出していません。私はtempディレクトリ(このバイナリはCWD全体を捨てるのが好きです)を作成し、バイナリを実行し、出力ファイルから読み込みます(問題のバイナリの引数としてその名前を指定します)。一時ディレクトリとその内容を吹き飛ばす。
私は、記述したすべてのものを実行するために、(Filepath - > IO a)型の関数を記述する必要がありますか?誰もがこの効果をもたらす良い例はありますか?
この場合、使用されるバイナリはPsiPred(タンパク質の二次構造予測)であり、そのソースは利用可能ですが、変更する必要はありません。私たちが取り組んでいるこのソフトウェアは、タンパク質における遠隔相同性検出のためのコンピュータ生物学プログラムです。