为什么声明拼接不允许在声明括号内?有解决方法吗?

时间:2013-09-03 00:03:47

标签: haskell ghc template-haskell

我正在尝试制作一个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

为什么不允许这样做?有没有办法拼接声明?似乎唯一的选择是重新整理输入声明,这只会令人讨厌。

1 个答案:

答案 0 :(得分:2)

haskell-src-metaparseDecs :: String -> Either String [Dec]来解析。