としてデータコンストラクタ名を取得する私は、 "X"、 "Y"、または「どちらかを返す関数getDConst
ハスケル:文字列
getDConst :: D -> String
を持つことを望む私たちは
data D = X Int | Y Int Int | Z String
を持っているとしましょうZ "に変換されます。すべてのデータコンストラクタでcase
を実行することなくこれを書く一般的な方法はありますか?
import Data.Data
data D = X Int | Y Int Int deriving (Data,Typeable)
let result = show $ toConstr (X 3) -- result contains what we wanted
誰もこれでエラーを取得する場合:追加してみてください '{ - #言語DeriveDataTypeable#を - }'ファイルの先頭に。 GHCでは、データと型定義可能関数を派生するときに必要です。 – jPlatte