Templates 从模板Haskell代码生成最终代码

Templates 从模板Haskell代码生成最终代码,templates,haskell,compilation,compile-time,template-haskell,Templates,Haskell,Compilation,Compile Time,Template Haskell,问题 是否可以从包含模板Haskell函数的代码中生成“纯”Haskell代码 我想得到所有Haskell模板的量化和拼接都展开的代码?(将其输入另一个Haskell编译器(Haste),该编译器还不支持模板Haskell。) 示例 模块元组副本: tupleReplicate n = do id <- newName "x" return $ LamE ([VarP id]) (TupE $ replicate n $ VarE id) 可扩展为: main :: I

问题

是否可以从包含模板Haskell函数的代码中生成“纯”Haskell代码

我想得到所有Haskell模板的量化和拼接都展开的代码?(将其输入另一个Haskell编译器(Haste),该编译器还不支持模板Haskell。)

示例

模块元组副本:

tupleReplicate n = do 
    id <- newName "x"
    return $ LamE ([VarP id]) (TupE $ replicate n $ VarE id)
可扩展为:

main :: IO ()
main = do
    print (\x->(x,x,x)) "x"
    return ()

最简单的方法是使用
-ddump拼接编译(或在GHCi中解释)

使用Template Haskell pretty printer的解决方案可以在以下位置找到:

还有其他工具,如对此处问题的回答:


-ddump拼接的结果
并不总是有效的haskell代码,它只适用于程序员。

据我所知
-ddump拼接
不会生成有效的haskell代码。
main :: IO ()
main = do
    print (\x->(x,x,x)) "x"
    return ()