5

问题

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

我想获得扩展所有 Haskell 模板的引号和拼接的代码?(将它输入另一个 Haskell 编译器 (Haste),它还不支持 Template Haskell。)

例子

模块元组复制:

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 ()
4

2 回答 2

2

使用 Template Haskell 漂亮打印机的解决方案可以在这里找到: 查看 Template Haskell 生成的代码的首选方法

还有其他工具,这里回答了一个问题: 如何从使用 Template Haskell 生成的代码创建非 TH 包?

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

于 2013-07-21T19:59:24.463 回答
0

最简单的方法是使用-ddump-splices.

于 2013-07-18T01:40:40.170 回答