gpt4 book ai didi

haskell - 如何使用 Shake 库构建响应式(Reactive)构建系统?

转载 作者:行者123 更新时间:2023-12-02 13:11:40 24 4
gpt4 key购买 nike

是否可以使用 inotify(或 git-annex 和 Yesod 使用的任何东西)使 Shake 响应,以便如果文件系统发生变化以暗示应该执行该规则,它会尽早执行?

最佳答案

《Shake》的作者 Neil Mitchell 回答道:

有几种方法可以解决这个问题:

  1. 您可以在每次检测到某些内容时重新运行 Shake改变了。 Shake 针对快速重建进行了高度优化,如果发生变化需要进行编译,然后是 Shake 弄清楚什么的时间重建可能是最小的。不需要对 Shake 进行任何更改。

  2. Shake 在启动时会执行某些操作,例如读取震动数据库。如果有需求,结果就是随着时间的推移,我很乐意提供一个廉价的重新运行 Shake API某种程度 - 这并不难做到。

  3. 当 Shake 进行重建检查时,最昂贵的事情是所做的是检查文件修改时间。如果 inotify 层给出了已更改的文件列表我只能重新检查以下内容实际上已经改变了。对于大型项目,您可能会看到 ~1 秒检查修改时间,所以它可能会给你带来一些好处,并且实现起来并不难。

  4. 如果 Shake 正在积极构建,然后发生变化,您可能会抛出异常,终止正在构建的任何内容,然后重新启动摇。 Shake 已经过彻底测试,但会抛出异常并做正确的事。我知道至少有一个人使用 Shake就这样。

  5. 最后,如果 Shake 正在积极构建,您可以动态地仅终止那些输入已更改的规则并再次执行。Shake 可以支持这个模型,但这将是一个合理的数量工作,并需要重新设计一些部分。这将是完整的响应式(Reactive)模型,但我怀疑只有当你有大量文件,并且少数文件几乎正在更改连续,但大多数文件不是。

我们还确定,将 Shake 与 Hobbes(也在 Hackage 上)等实用程序结合起来可以进行响应式(Reactive)构建。

关于haskell - 如何使用 Shake 库构建响应式(Reactive)构建系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18004102/

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