У меня есть часть кода, обрабатывающая файлы,
processFiles :: [FilePath] -> (FilePath -> IO ()) -> IO ()
Эта функция запускает процесс async, который выполняет действие ввода-вывода. Это действие IO должно быть отправлено в кластер через систему планирования заданий (например, Slurm).
Поскольку я должен использовать систему планирования заданий, невозможно использовать cloudHaskell для распространения закрытия. Вместо этого программа записывает новый файл Main.hs, содержащий требуемые вычисления, то есть скопируйте в кластер node вместе со всеми основными модулями, и это выполняется удаленно с помощью "runhaskell Main.hs [opts]". Затем процесс async должен периодически запрашивать систему планирования заданий (используя threadDelay), если задание выполняется.
Есть ли способ избежать создания нового Main? Могу ли я сериализовать действие ввода-вывода и выполнить его каким-либо образом в node?