问题
是否可以从包含Template Haskell函数的代码生成“纯”Haskell代码?
我想获得所有Haskell Template的qutations和splices扩展的代码? (将它提供给另一个Haskell编译器(Haste),它还不支持Template Haskell。)
示例
模块TupleReplicate:
tupleReplicate n = do
id <- newName "x"
return $ LamE ([VarP id]) (TupE $ replicate n $ VarE id)
主:
main :: IO ()
main = do
print $(tupleReplicate 3) "x"
return ()
可以扩展为:
main :: IO ()
main = do
print (\x->(x,x,x)) "x"
return ()
答案 0 :(得分:2)
使用Template Haskell漂亮打印机的解决方案可以在这里找到: Preferred method for viewing code generated by Template Haskell
还有其他工具,这里回答了一个问题: How to create a non-TH package from code generated using Template Haskell?
-ddump-splices
的结果并不总是有效的haskell代码,它只适用于程序员。
答案 1 :(得分:0)
最简单的方法是使用-ddump-splices
编译(或在GHCi中解释)。