conNameOf
假设类型是的实例,则允许我显示给定数据的构造函数名称Generic
。
我想要的是类似的东西。对于给定的类型,我想获取构造函数名称的完整列表。例如:
data Nat = Z | S Nat
deriving (Generic)
-- constrNames (Proxy :: Proxy Nat) == ["Z", "S"]
是否constrNames
存在类似的东西?如果没有,我该怎么写?
该函数conNames
从模块Generics.Deriving.ConNames
在包generic-deriving
提供此功能。它使用给定类型的术语,尽管未使用其值,因此可以使用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"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句