I want to make it possible to have a simple derive clause for a newtype like
newtype Username = Username Text
deriving newtype FormatQuote
and then automatically have that type implement PyFToString and all relevant mechanisms, so that when I write
let u = Username "myuser"
in [fmt|There was a problem with user {u}!|]
it will use a magical formatting that we define somehow, and the result will be:
There was a problem with user "myuser"
where the quotes get automatically added by the way FormatQuote is implemented.
I don’t know if this is possible at all, but it would be cool to have somehow.
I guess the closest is the following snippet:
class FormatQuote a where
q :: a -> FormatQuoteT
instance FormatQuote Text where
q t = FormatQuoteT $ textToString t
newtype FormatQuoteT = FormatQuoteT String
type instance PyF.PyFClassify FormatQuoteT = 'PyF.PyFString
instance PyF.PyFToString FormatQuoteT where
pyfToString (FormatQuoteT s) = "\"" <> s <> "\""
which lets me do
let u = Username "myuser" in [fmt|{q u}|]
"\"myuser\""
however, this means I always have to remember to use q and also the q symbol is not available in any of my code.
I want to make it possible to have a simple derive clause for a newtype like
and then automatically have that type implement
PyFToString
and all relevant mechanisms, so that when I writeit will use a magical formatting that we define somehow, and the result will be:
where the quotes get automatically added by the way
FormatQuote
is implemented.I don’t know if this is possible at all, but it would be cool to have somehow.
I guess the closest is the following snippet:
which lets me do
however, this means I always have to remember to use
q
and also theq
symbol is not available in any of my code.