I want to do something like this:
data MyDataType = MyDataType class HasSpecialField a where specialField :: a -> ByteString instance HasSpecialField a => HasSpecialField (a, b) where specialField (a, b) = specialField a instance HasSpecialField b => HasSpecialField (a, b) where specialField (a, b) = specialField b instance HasSpecialField MyDataType where specialField _ = "Coolio"
That is, if you have a tuple like:
myTuple :: (String, (Int, MyDataType))
Then you can run specialField myTuple to return "Coolio".
Is there any way to do this?
source share