It seems to me that I donβt like it - the deriving clause is full of built-in magic, so I am skeptical that derived instances using the rebound syntax will be useful in practice. Now, if you can also rebuild the deriving clause and use TH splicing instead ... but I digress.
I suspect that the simplest and easiest solution is to use different modules. Put the data type definition in your own module, use the deriving clause there with the Prelude functions in scope, then import the type in the module using translatable syntax. If you need additional modularity in your modules, note that StandaloneDeriving also exists and will allow you to define types in one module (with RebindableSyntax active), output instances in another module (without RebindableSyntax ), and import both from modules that actually use the type.
source share