Как я могу увидеть сгенерированный код конкретного файла haskell при использовании yesod - PullRequest
1 голос
/ 11 октября 2019

Из-за неправильного ввода функция Template Haskell генерирует неработающий код. Как я могу применить -ddump-splices только к одному файлу в Yesod?

Я знаю, что исправление неверного ввода - это решение, но отладка зависит от того, что генерируется шаблоном Haskell, которого я не вижув выводе ошибки из того, что я обычно запускаю

stack exec -- yesod devel

Я думаю, что функция staticFiles в src/Settings/StaticFiles.hs должна быть функцией Template Haskell. Я думал, что смогу взглянуть на то, что генерируется этим, но я понял, что я не в своей тарелке, наивно пытаясь stack exec --ghc-options='-ddump-splices' -- yesod devel безрезультатно.

Как я могу применить -ddump-splices только к одномуфайл в есод?

Другие высокоуровневые комментарии по отладке Yesod / Template Haskell приветствуются.

1 Ответ

1 голос
/ 11 октября 2019

Вы можете добавить прагму в файл Haskell, где вы хотите визуализировать сращивания. Например:

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

import SomeModule(someTHFunction)

foo = $(someTHFunction 14 25)

Когда я проверяю это локально, он будет выгружать только фрагменты шаблона Haskell в файл, куда добавляется эта прагма, так что вы можете добавить его в файлы, где вас интересует шаблон Haskellреализации, и опустить другие.

...