4

说我有这个:

f x = x + 1

tt2 name o = sequence [valD (varP (mkName name)) (normalB [| f $(varE o) |]) []]

我想转换tt2tt

tt name o = [d| ??? = f $(varE o) |]

我无法弄清楚???应该是什么。这可能是因为我还不明白 TH 是如何工作的。有人可以帮忙吗?

4

1 回答 1

2

您正在尝试拼接名称或模式。不幸的是,这是不可能的。模板 Haskell 仅允许拼接表达式、类型和声明,因此您只能像在原始代码中那样手动进行。

请参阅GHC #1476了解不允许模式拼接的一些原因。

于 2013-05-02T07:09:49.253 回答