从Haskell中的外部文件处理标准Quasikote

从Haskell中的外部文件处理标准Quasikote,haskell,template-meta-programming,template-haskell,Haskell,Template Meta Programming,Template Haskell,我想为编译时AST操作读取一个外部Haskell源文件。我该怎么做?我尝试了以下类似的方法,但编译时没有出现错误消息“TH.hs:15:12: 不允许在声明括号内使用声明拼接” -------- --TH.hs {-#语言模板Haskell,准语言模板} 模块TH,其中 导入语言.Haskell.TH 导入语言.Haskell.TH.Quote dd::准晶石 dd=准整数未定义未定义ddDec ddDec文件_name=do 档案室 进口 进口 dd:: dd= 谢谢你的回复。我在haskel

我想为编译时AST操作读取一个外部Haskell源文件。我该怎么做?我尝试了以下类似的方法,但编译时没有出现错误消息“TH.hs:15:12: 不允许在声明括号内使用声明拼接”

--------
--TH.hs
{-#语言模板Haskell,准语言模板}
模块TH,其中
导入语言.Haskell.TH
导入语言.Haskell.TH.Quote
dd::准晶石
dd=准整数未定义未定义ddDec
ddDec文件_name=do
档案室
进口
进口
dd::
dd=

谢谢你的回复。我在haskell src exts qq包中找到了该模块,但我得到了“尝试运行编译时代码时出现异常:未实现”的错误。我阅读了声明,实际上Quasikoter没有实现。也许我可以在源代码中编写一个与AntizoteExp类似的代码?(不过,我不知道怎么做。)
--------
-- TH.hs

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

module TH where

import Language.Haskell.TH  
import Language.Haskell.TH.Quote  

dd :: QuasiQuoter  
dd = QuasiQuoter undefined undefined undefined ddDec  
ddDec file_name = do  
    file_cts <- runIO (readFile file_name)  
--  runQ [d| dummy = 0 |]  -- This can compile.  
    runQ [d| file_cts |]     -- This does not compile.  

--------
-- main.hs

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

import Language.Haskell.TH  
import Language.Haskell.TH.Quote  
import TH  

[dd|input.hs|]  

--------
-- input.hs

test = putStrLn "Hello."

--------
import Language.Haskell.Exts.QQ import Language.Haskell.TH.Quote dd :: QuasiQuoter dd = quoteFile dec