1

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

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

4

1 回答 1

2

haskell-src-meta需要parseDecs :: String -> Either String [Dec]进行解析。

于 2013-09-03T02:17:07.490 回答