【发布时间】:2014-10-05 15:29:55
【问题描述】:
我最近一直在使用带有 SBT 的 Scala。 REPL 循环有一个方便的功能:~ COMMAND,意思是对项目中的每个源文件更改执行命令。例如:
~ test
和
~ compile
非常对快速开发很有用。我想知道,有没有人知道 Haskell 类似的东西,一个阴谋集团的外壳,也许?
【问题讨论】:
我最近一直在使用带有 SBT 的 Scala。 REPL 循环有一个方便的功能:~ COMMAND,意思是对项目中的每个源文件更改执行命令。例如:
~ test
和
~ compile
非常对快速开发很有用。我想知道,有没有人知道 Haskell 类似的东西,一个阴谋集团的外壳,也许?
【问题讨论】:
您可以使用inotifywait 轻松获得类似的东西。
只需在您的项目目录中启动一个终端并运行以下内容:
$ while inotifywait -qq -r -e modify .; do cabal build && ./dist/build/tests/tests; done
这也适用于任何其他语言;只需插入您选择的构建命令。
【讨论】:
ghcid 更好的选择,因为它没有做任何事情来克服 ghc 缺乏对多个组件的支持。 IE ghcid 可以观看 just 测试,但是如果 src 文件发生变化,它不会捕捉到它;仅当测试文件更改时。
您可以编写 ghci 脚本来定义您自己的命令和扩充现有命令。为此:
:def 编写一个宏来替换例如:reload
有关 GHCi :def 命令的更多信息是 here。
【讨论】:
ghcid 项目提供的内容仅限于~ :reload。它提供了一些额外的功能(格式化为固定的行数,从以前加载的文件中保留警告),但不是运行任何命令的通用性。
【讨论】: