Woj*_*ilo 5 templates haskell compilation compile-time template-haskell
问题
是否有可能从包含Template Haskell函数的代码生成"纯"Haskell代码?
我想得到所有Haskell模板的qutations和拼接扩展的代码?(将其提供给另一个Haskell编译器(Haste),它还不支持Template Haskell.)
例
module TupleReplicate:
tupleReplicate n = do
id <- newName "x"
return $ LamE ([VarP id]) (TupE $ replicate n $ VarE id)
Run Code Online (Sandbox Code Playgroud)
主要:
main :: IO ()
main = do
print $(tupleReplicate 3) "x"
return ()
Run Code Online (Sandbox Code Playgroud)
可以扩展到:
main :: IO ()
main = do
print (\x->(x,x,x)) "x"
return ()
Run Code Online (Sandbox Code Playgroud)
使用 Template Haskell 漂亮打印机的解决方案可以在这里找到: 查看 Template Haskell 生成的代码的首选方法
还有其他工具,如此处回答的问题: How to create a non-TH package from code generated using Template Haskell?
的结果-ddump-splices并不总是有效的 haskell 代码,它仅适用于程序员。