[Haskell-cafe] The instability of Haskell libraries
John Goerzen
jgoerzen at complete.org
Mon Apr 26 09:33:09 EDT 2010
On 04/25/2010 03:47 PM, Ivan Lazar Miljenovic wrote:
> So you recommend having packages specifically for instances?
>
> My main problem with this is if you want a custom variant of that
> instance. Let's take FGL graphs for example with instances for
> QuickCheck's Arbitrary class. Maybe you want arbitrary graphs that are
> simple, or maybe multiple edges are fine. Even when considering
> Arbitrary instances for something like String you may wish to have a
> custom variant that makes sense for what you're testing.
>
> My conclusion: it is not possible to have hard-and-fast conclusions for
> things like this :p
I'm inclined to agree. As an example, there is the convertible library.
It grew out of the need to make an easy way to map Haskell to database
types in HDBC, and these days is a more general way to convert from one
type to another. I provide a bunch of Convertible instances, but they
are in separate modules, and thus can be omitted if a person doesn't
want the instances. As an example: what's the correct way to convert a
Double to an Integer? As an example, Prelude defines at least 4:
ceiling, floor, truncate, and round.
Now, in a certain sense, Convertible is designed for people that don't
care which is used. (And yes, that is a perfectly valid answer in some
cases.) But if you want your own, you can simply not import the numeric
Convertible instances.
It would, however, be nice if the language allowed you to override
default instances with the code in your own package.
-- John
More information about the Haskell-Cafe
mailing list