[Haskell-cafe] Should there be a haskell template for inclusion polymorphism in Haskell?

Olaf Klinke olf at aatal-apotheke.de
Thu May 26 21:32:38 UTC 2022


> So my central questions for discussions are:
> 
> - Is inclusion polymorphism something we should use at all in Haskell?
> - These boiler plate code maybe better be generated using Haskell template
> instead, is there one already, or should
>   there be one?

Maybe one of the authors of a sub-typing library can share a more
informed opinion on this. My view as a mathematician: 
A type being a subtype of another is a relation between types. 
Relations between types is what multi-parameter type classes is about. 
Hence it seems that this is how subtypes in Haskell ought to be done.
For example, in the attenuation and records-sop package, the latter of
which is based on genercis-sop, which depends on Template Haskell. So
without having used any of the mentioned packages, I believe your
second question can be answered with  "yes". 
Regarding the first question, we should probably ask ourselves how much
type-safety we're sacrificing for the convenience we gain. The Num
example you gave shows one possible danger: While a subtype relation
may hold mathematically, the implementiation details may cause this
relation to fail in reality. Example: All floating point numbers are
rationals, aren't they? So there should be a subtype relation. But how
to convert NaN, -infinity or -0 of type Double to a pair of Integers?

Olaf



More information about the Haskell-Cafe mailing list