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

How can I see a specific file's generated template haskell code when using yesod

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

我知道修复错误的输入是解决方案,但调试取决于模板 Haskell 生成的内容,我通常无法在错误输出中看到它 [=31] =]

stack exec -- yesod devel

我认为 src/Settings/StaticFiles.hs 中的函数 staticFiles 必须是模板 Haskell 函数。我想我会看看它产生了什么,但我意识到我超出了我的深度,天真地尝试 stack exec --ghc-options='-ddump-splices' -- yesod devel 没有效果。

如何将 -ddump-splices 应用到 Yesod 中的一个文件?

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

您可以在 Haskell 文件中添加 pragma,以在其中渲染拼接。喜欢:

{-# <b>OPTIONS_GHC -ddump-splices</b> #-}
{-# LANGUAGE TemplateHaskell #-}

import SomeModule(someTHFunction)

foo = $(someTHFunction 14 25)

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