Given the following code:
{-# LANGUAGE OverloadedStrings #-} newtype Firstname = Firstname String deriving (Eq, Show) instance IsString Firstname where fromString = Firstname newtype Lastname = Lastname String deriving (Eq, Show) instance IsString Lastname where fromString = Lastname data Person = Person { firstname :: Firstname, lastname :: Lastname, age :: Int } deriving Show
I would like to remove the template to create strongly typed strings. Is it possible to use Template Haskell (or some other means) to achieve this?
for example, something like:
{-# LANGUAGE OverloadedStrings, TemplateHaskell #-} $(strongString ''Firstname) $(strongString ''Lastname) data Person = Person { firstname :: Firstname, lastname :: Lastname, age :: Int } deriving Show
Darren
source share