Suppose I have a data type like so:
data Color = Red | Blue | Green
How would I generate a function like this using templatehaskell?
myShow Red = ...
myShow Blue = ...
myShow Green = ...
i.e. I'm looking for multiple definitions for a function based on pattern-matching.
{-# 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) []
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With