Я пытаюсь сделать квазикватер, который определяет простой сахар для деклараций типа. Самый простой способ сделать это - просто использовать некоторые регулярные выражения для изменения входной текстовой строки. Но когда я скомпилировать этот код код наброски:Почему в сращивающихся скобках не допускаются сращивания объявлений? Есть ли обходной путь?
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
import Language.Haskell.TH
import Language.Haskell.TH.Quote
myquote = QuasiQuoter
{ quoteDec = \d -> [d| d |]
}
GHC генерирует ошибку говоря:
Declaration splices are not permitted inside declaration brackets
Почему это не разрешено? Есть ли способ спланировать объявления? Кажется, единственная альтернатива - это перерисовать всю входную декларацию, которая просто была бы неприятной.