gpt4 book ai didi

Haskell/Intero - 将行发送到 Intero REPL 缓冲区

转载 作者:行者123 更新时间:2023-12-02 15:06:29 25 4
gpt4 key购买 nike

我一直在尝试使用 Haskell 来运行一个简单的生产过程。与许多生产过程一样,它涉及改变整个地方的事物状态。出于这个原因,拥有一个脚本文件对我来说真的很方便,我可以在其中跟踪事物并有选择地将命令运行到交互式 Haskell 中,例如

-- 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 ["abunch@ofemails.com", "thatIwould@rather.com",
"nothaveto@keep.com" "typing@out.com",
"orcopy@pasting.com"]

-- 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"

如果像 R 中的 ESS(Emacs 讲统计)一样,如果您可以按一个按钮将这些行发送到 repl 进程,那就太酷了。也许行、段落、区域有单独的按钮。已经有办法做到这一点了吗?

例如,对于 ESS,C-Ret 发送行,C-c C-c 发送段落,C-c C-r 发送区域。

最佳答案

此 emacs lisp 函数将向 haskell 的 repl 发送命令

(defun haskell-send-command (cmd)
(process-send-string (inferior-haskell-process) (concat cmd "\n")))

这将调用当前选择的前一个

(defun haskell-send-selection ()
(interactive)
(haskell-send-command (x-selection)))

您可以使用global-set-key为其分配键盘快捷键。然后您需要弄清楚如何快速选择要发送的内容。例如M-h是标记段落。或者只是重新编码您喜欢的 ESS 函数:

(defun haskell-send-paragraph ()
(interactive)
(mark-paragraph)
(haskell-send-selection))

我实际上使用它们在 emacs 中为 Haskell 构建了一个小型调试 GUI。我有设置断点和单步执行的快捷方式,调试器的位置直接在 haskell 代码中突出显示。

关于Haskell/Intero - 将行发送到 Intero REPL 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com