使用yesod时如何查看特定文件的生成模板haskell代码

时间:2019-10-11 14:41:27

标签: yesod template-haskell

由于某些错误的输入,Template Haskell函数正在生成损坏的代码。如何在Yesod中仅将-ddump-splices应用于一个文件?

我知道解决输入错误是解决方案,但是调试取决于模板Haskell生成的内容,我在正常运行的错误输出中看不到

stack exec -- yesod devel

我认为staticFiles中的函数src/Settings/StaticFiles.hs必须是Template Haskell函数。我以为我会研究由此产生的结果,但是我意识到自己已经超出了深度,天真地尝试stack exec --ghc-options='-ddump-splices' -- yesod devel无效。

如何在Yesod中仅将-ddump-splices应用于一个文件?

非常欢迎其他有关调试Yesod / Template Haskell的高级评论。

1 个答案:

答案 0 :(得分:1)

您可以在要渲染接头的Haskell文件中添加一个编译指示。喜欢:

{-# OPTIONS_GHC -ddump-splices #-}
{-# LANGUAGE TemplateHaskell #-}

import SomeModule(someTHFunction)

foo = $(someTHFunction 14 25)

当我在本地测试时,它只会将模板Haskell的切片转储到添加了该编译指示的文件中,因此您可以将其添加到对模板Haskell实现感兴趣的文件中,而忽略其他文件