add Storable a => Storable (Ratio a) and Storable a => Storable (Complex a) to base

Edward Kmett ekmett at gmail.com
Mon Nov 3 20:26:19 UTC 2014


Haskell as a language and GHC as an implementation both lack a mechanism
for 'explicitly forbidding the construction of an instance'.

While I can accept an argument that Ratio Int and the like are 'a bad
abstraction', they do exist in the language we have today, and the ability
to store/load one of these things if you have one strikes me as a thing
unrelated to its existence of a bad abstraction.

The badness of the abstraction, however, is not helped nor harmed by the
existence of a Storable instance.

If you want to lobby to destroy the polymorphism of Ratio, and limit it to
Rational, I'd be all for that. It is a much bigger and much more
controversial debate, runs into standards issues, etc., but its one worth
considering,.

That said, I don't think crippling the thing we have because you don't
think it should exist is the right way to go about it, though.

-Edward


On Mon, Nov 3, 2014 at 3:18 PM, Henning Thielemann <
lemming at henning-thielemann.de> wrote:

>
> On Mon, 3 Nov 2014, Edward Kmett wrote:
>
>  To be honest I don't think omitting an instance because you don't believe
>> the type should be used at all is a useful strategy.
>>
>
> Explicitly forbidding Storable (Ratio a) has the advantage that we can
> explain the reasons in the documentation of the blocking instance. In
> contrast, a missing instance just looks like someone has forgotten it. It
> would be simple to turn a blocked instance into a useful one in future,
> once one is found. It is also easier to do so if no orphan instances of
> Storable (Ratio a) lie around.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20141103/3a4523c9/attachment.html>


More information about the Libraries mailing list