[Haskell-cafe] Unnecessarily strict implementations
Neil Brown
nccb2 at kent.ac.uk
Fri Sep 3 06:23:54 EDT 2010
On 03/09/10 11:11, Henning Thielemann wrote:
>
> Ivan Lazar Miljenovic schrieb:
>> On 3 September 2010 04:57, Arie Peterson <ariep at xs4all.nl> wrote:
>>> On Thu, 2 Sep 2010 19:30:17 +0200, Daniel Fischer
>>> <daniel.is.fischer at web.de> wrote:
>>>> Why would one consider using Ord for Map an abuse?
>>>> A kludge, for performance reasons, but an abuse?
>>> Because it forces one to declare Ord instances for types which have no
>>> natural ordering. It is useful to *not* have such instances, in
>>> order to
>>> catch programming errors.
>>
>> What precisely do you mean by natural ordering?
>
> E.g. I wanted to have a Set of Gaussian (complex) integers, but I did
> not want to define an Ord instance for them, because writing
> a < (b :: Gaussian)
> is a bug with high probability.
Isn't this what newtype is good for? Instead of declaring Ord Gaussian
to get Set Gaussian and risking the bug you describe, create newtype
GaussianInSet = G Gaussian, declare Ord GaussianInSet and use Set
GaussianInSet.
Thanks,
Neil.
More information about the Haskell-Cafe
mailing list