具有模板Haskell的多功能定义

弗拉德·黑斑羚

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

data Color = Red | Blue | Green

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

myShow Red   = ...
myShow Blue  = ...
myShow Green = ...

即我正在寻找基于模式匹配的功能的多个定义。

用户
{-# 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) []

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章