【发布时间】:2012-01-17 11:26:15
【问题描述】:
假设我有以下内容:
data Rec = Rec {
alpha :: Int,
beta :: Double,
phi :: Float
}
sample = Rec 1 2.3 4.5
我了解 Template Haskell 和 reify 函数可以获取记录的字段名称。那就是:
print $(f sample) --> ["alpha", "beta", "phi"]
还有一种说法是这可以在没有模板 Haskell 的情况下完成。有人可以提供一个示例实现吗?
【问题讨论】:
-
不用模板Haskell也可以得到字段名。
-
@augustss:怎么样?一些
Typable黑魔法?无论哪种方式,大多数用途都可以将这些信息用于 Template Haskell。 -
@delnan 您可以使用
Data.Data,也可以只派生Show,显示sample,然后对该字符串进行一点解析。 -
我没有看到很多令人信服的理由来实际这样做。
标签: haskell template-haskell reify