gpt4 book ai didi

haskell - 列出 Haskell 类型的构造函数名称?

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

conNameOf 允许我显示给定数据的构造函数名称,假设该类型是 Generic 的实例。

我想要的是类似的东西。对于给定的类型,我想获取构造函数名称的完整列表。例如:

data Nat = Z | S Nat
deriving (Generic)

-- constrNames (Proxy :: Proxy Nat) == ["Z", "S"]

是否存在类似 constrNames 的东西?如果没有,我该怎么写?

最佳答案

generic-deriving 包中Generics.Deriving.ConNames 模块的conNames 函数提供了此功能。它需要一个给定类型的术语,尽管它的值没有被使用,所以你可以使用 undefined:

{-# LANGUAGE DeriveGeneric #-}

import GHC.Generics
import Generics.Deriving.ConNames
import Data.Proxy

data Nat = Z | S Nat deriving (Generic)

main = print $ conNames (undefined :: Nat)

给予:

λ> main
["Z","S"]

关于haskell - 列出 Haskell 类型的构造函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63382303/

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