在GHCi中,重新加载并运行:main的正确方式是什么?

13

有没有一种方法可以将:reload/:r:main链接成一个单一的命令在GHCi中使用?

这样做的目的是避免在我更改其他终端中的内容时每次都输入两个命令,而只需输入Enter.

1个回答

23

:cmd 似乎接受具有多行的字符串。 因此,您可以执行以下命令。

:cmd return $ unlines [":reload",":main"]

你也可以将以下代码添加到~/.ghci

:def hoge const $ return $ unlines [":reload",":main"]

现在你可以在ghci中执行:hoge


4
“hoge”? 你是不是想说“doge”? - luqui
3
hoge是元语法变量(http://en.wikipedia.org/wiki/Metasyntactic_variable)之一,经常在日本使用。 - ymonad
你可以将其扩展为 :cmd return $ unlines ["kt",":reload","kt <- forkAndKill"],其中 forkAndKill 分叉一些操作,然后返回线程 kill 操作。这对于单个命令服务器重新启动非常有用。 - Steven Armstrong
@ymonad 对于 :def 的例子,我得到了符号 constreturn$unlinesVariable not in scope 错误。我该如何导入它们? - Răzvan Flavius Panda
1
@RăzvanFlaviusPanda 它们在 Prelude 模块中,通常默认加载。也许你可以尝试在执行 :def 命令之前导入 import Prelude:module +Prelude - ymonad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接