gpt4 book ai didi

haskell - 当 Emacs 23 Haskell 编译 (C-c C-l) 进入无休止的过程时该怎么办?

转载 作者:行者123 更新时间:2023-12-01 02:33:09 25 4
gpt4 key购买 nike

很多时候,当我尝试编译 .hs 时会发生这种情况。文件,Emacs 23 Haskell 模式进入一个无休止的过程并且不显示任何响应。唯一发生的事情是光标变成一个圆圈,并且在圆圈内圆点开始盘旋。

避免这种情况的最佳方法是什么?如果我陷入这样的境地,我该如何脱身?目前,我重新启动了我的电脑。请指导。

最近,它发生在以下代码中:

import Control.Monad
import Data.Char
main = do
putStrLn "This is an addition"
contents <- getContents
putStrLn $ (shortLinesOnly contents)
shortLinesOnly :: String -> String
shortLinesOnly input =
allLines = lines input
shortLines = filter (\line -> length line < 10) allLines
res = unlines shortLines
in result

最佳答案

也许找到执行编译的函数并将其包装成类似的东西是有意义的:

(with-local-quit
(with-timeout (60 (error "The process didn't finish in 60 seconds"))
;; do the calls to the compiler here
))

如果这还没有完成。如果这样做了,那么,正如幻觉所建议的那样,您应该能够使用 C-g 中断该过程。

但是,有时 Emacs 可能会变得太慢或太无响应(系统可能会给它启动的进程赋予非常高的优先级,因此您将不得不等待很长时间,直到控制权从具有高优先级的阻塞进程返回到 Emacs) .尽管如此,这还不是重新启动计算机的原因。在 Linux 上,您可能运行在运行级别 3,在这种情况下,您可以执行 Ctrl+Alt+1 或任何小于运行 X-server 的 shell 的数字,然后执行
$ ps aux | grep "my process name"

这将向您打印有关该过程的一些详细信息,从其 id 开始,给定您可以执行的 id:
$ kill id

或者,您可以杀死 emacs 的所有实例以及从中产生的所有进程:
$ killall emacs

关于haskell - 当 Emacs 23 Haskell 编译 (C-c C-l) 进入无休止的过程时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804492/

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