У меня есть программа на Haskell, которая должна выполнять отдельный (сторонний) двоичный файл;этот двоичный файл будет записывать свои выходные данные в файл, предоставленный в качестве аргумента командной строки (он, похоже, не желает писать в STDOUT).Я вижу, что System.Cmd позволит мне вызывать этот двоичный файл, но я весьма озадачен типом withTeoraryDirectory.А именно:
withTemporaryDirectory :: FilePath -> (FilePath -> IO a) -> IO a
, тогда как System.Cmd просто дает мне:
rawSystem :: String -> [String] -> IO ExitCode
(а также систему, которая в данном случае не отличается от других).
Я просто пытаюсь понять, как их соединить;Я хочу создать временный каталог (этот двоичный файл любит рвать на всем протяжении его CWD), запустить двоичный файл, прочитать из его выходного файла (я буду знать его имя, когда я предоставлю это в качестве аргумента для рассматриваемого двоичного файла), а затемвзорвать временный каталог и его содержимое.
Итак, я должен написать функцию, тип которой (Filepath -> IO a), чтобы выполнить все то, что я описал?Есть ли какие-нибудь хорошие примеры, которые кто-нибудь может привести в этом отношении?
В этом случае используется двоичный файл PsiPred (предсказание вторичной структуры белка), и хотя его источник доступен, я бы предпочел не изменять его.Это программное обеспечение, над которым мы работаем, является программой вычислительной биологии для дистанционного обнаружения гомологии в белках.