Dan*_*ton 4 reflection haskell
conNameOf允许我显示给定数据的构造函数名称,假设该类型是Generic.
我想要的是类似的东西。对于给定的类型,我想获取构造函数名称的完整列表。例如:
data Nat = Z | S Nat
deriving (Generic)
-- constrNames (Proxy :: Proxy Nat) == ["Z", "S"]
Run Code Online (Sandbox Code Playgroud)
类似的东西constrNames存在吗?如果没有,我该怎么写?
包中conNames模块的函数提供了这个功能。它采用给定类型的术语,但未使用其值,因此您可以使用:Generics.Deriving.ConNamesgeneric-derivingundefined
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Generics.Deriving.ConNames
import Data.Proxy
data Nat = Z | S Nat deriving (Generic)
main = print $ conNames (undefined :: Nat)
Run Code Online (Sandbox Code Playgroud)
给出:
?> main
["Z","S"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |