带有模板haskell的多个函数定义

Vla*_*ala 7 haskell template-haskell

假设我有这样的数据类型:

data Color = Red | Blue | Green
Run Code Online (Sandbox Code Playgroud)

如何使用templatehaskell生成这样的函数?

myShow Red   = ...
myShow Blue  = ...
myShow Green = ...
Run Code Online (Sandbox Code Playgroud)

即我正在寻找基于模式匹配的函数的多个定义.

use*_*038 3

{-# LANGUAGE TemplateHaskell #-}

module Test where 

import Language.Haskell.TH

data Color = Red | Blue | Green

myShow' :: Q [Dec]
myShow' = return [FunD (mkName "myShow") [mkClause 'Red, mkClause 'Blue, mkClause 'Green]]
  where mkClause n = Clause [ConP n []] (NormalB $ LitE $ StringL $ nameBase n) []
Run Code Online (Sandbox Code Playgroud)