我正在尝试制作一个quasiquoter,为类型声明定义一些简单的糖。最简单的方法是使用一些正则表达式来修改输入文本字符串。但是当我编译这段代码大纲代码时:
{-# 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
为什么不允许这样做?有没有办法拼接声明?似乎唯一的选择是重新整理输入声明,这只会令人讨厌。