-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
I want to make it possible to have a simple derive clause for a newtype like
newtype Username = Username Text
deriving newtype FormatQuoteand 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.
BlueNebulaDev
Metadata
Metadata
Assignees
Labels
No labels