Я пытаюсь использовать Haskell для запуска простого производственного процесса. Как и многие производственные процессы, это связано с изменением состояния вещей повсюду. По этой причине, было бы очень удобно для меня, чтобы файл сценария, в котором я мог бы следить за вещами и выборочно запускать команды в интерактивном Haskell, что-то вродеHaskell/Intero - отправлять строки в буфер Intero REPL
-- to start the process
process <- startProcess
-- to stop process
stopProcess
-- to check how things are going
summary <- checkStuff
summary
-- optionally restart bad processes
restartProcesses (getBadProcesses summary)
-- send summary emails
sendSummaryEmails summary ["[email protected]", "[email protected]",
"[email protected]" "[email protected]",
"[email protected]"]
-- set up something big that I don't want to have to retype/paste every time
studentGrades <- getStudentGrades "John Peterson"
gen <- getStdGen
let (randomTest, gen') = generateRandomTest studentGrades gen
compilePdf randomTest
answers <- getAnswers
gradeTest randomTest answers "John Peterson"
Было бы очень здорово, если бы, например, с ESS (Emacs говорит статистику) в R, если вы можете нажать кнопку, чтобы отправить эти строки в процесс repl. Может быть, отдельные кнопки для строки, абзаца, региона. Есть ли способ сделать это?
Например, с ESS, C-Ret
отправляет строку, C-c C-c
отправляет абзац, а C-c C-r
отправляет регион.
Что мешает вам загружать файл в repl с помощью правильных команд и параметров? Что мешает вам скомпилировать код вместе с подходящей функцией 'main'? – MarLinn
Я не хочу запускать этот код сразу, я хочу выборочно загружать его в repl в зависимости от текущего состояния процесса, и делать это с одним нажатием клавиши ('C-Ret') на порядок (10-60 нажатий клавиш) и в 5 раз эффективнее, чем копия в emacs (около 5 нажатий клавиш). –
Я также могу настроить, как я запускаю строки «на лету», поэтому их кодирование в отдельные команды, а затем перезагрузка модуля также менее эффективна, чем просто изменение строк в скрипте и загрузка их в буфер. –