我正在尝试制作一个 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
为什么不允许这样做?有没有办法拼接声明?似乎唯一的选择是重新解析整个输入声明,这将是令人讨厌的。