2013-09-03 1 views
1

Я пытаюсь сделать квазикватер, который определяет простой сахар для деклараций типа. Самый простой способ сделать это - просто использовать некоторые регулярные выражения для изменения входной текстовой строки. Но когда я скомпилировать этот код код наброски:Почему в сращивающихся скобках не допускаются сращивания объявлений? Есть ли обходной путь?

{-# 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 

Почему это не разрешено? Есть ли способ спланировать объявления? Кажется, единственная альтернатива - это перерисовать всю входную декларацию, которая просто была бы неприятной.

ответ