gpt4 book ai didi

haskell - 获取 Haskell 记录的字段名称作为字符串列表?

转载 作者:行者123 更新时间:2023-12-03 20:39:40 26 4
gpt4 key购买 nike

说我有以下内容:

data Rec = Rec {
alpha :: Int,
beta :: Double,
phi :: Float
}

sample = Rec 1 2.3 4.5

我了解模板 Haskell 和 reify函数可以让我记录的字段名称。那是:
print $(f sample) --> ["alpha", "beta", "phi"]

还有一种说法是这可以在没有模板 Haskell 的情况下完成。有人可以为此提供一个示例实现吗?

最佳答案

它可以通过 GHC 可以为您派生的 Data(大多数 GHC 版本)或 Generic(7.2.x 及更高版本)实例来完成。以下是如何使用 Data 类型类转储记录字段的示例:

{-# LANGUAGE DeriveDataTypeable #-}

import Data.Data

data Rec = Rec {
alpha :: Int,
beta :: Double,
phi :: Float
} deriving (Data, Typeable)

sample = Rec 1 2.3 4.5

main :: IO ()
main = print . constrFields . toConstr $ sample

关于haskell - 获取 Haskell 记录的字段名称作为字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com