
It is sometimes useful for things like configuration, where a proper Monoid instance would be tricky and unnecessary. Other than this, I don't know of any legitimate uses.
Configuration records have a fantastic monoid instance. `mempty` provides
your defaults, and `mappend` provides an update. So you can do `mempty <>
fileConfiguration <> environmentVariables <> commandLineArgs` (or you can
flip the bias to get whatever overriding behavior you want). With
`DerivingVia`, we should be able to make this derivable, using the
First/Last semigroups/monoids and the isomorphism between tuples and
product types.
I'm weakly opposed to this type class as `def :: Foo` is less ergonomic
than `defFoo`, and I'm never polymorphic over what I want a default in.
But, as someone that doesn't want to use it, I don't have much of a say in
how it gets run or maintained :)
Matt Parsons
On Tue, May 8, 2018 at 3:39 AM, Marco Zocca
While I very much agree with all of you on the need for solid typeclass laws, I think Default still has its place in the library author toolkit .
Think for example of configuration data for very flexible functionality such as plotting.
On the other hand, if it's such a bad idea, what's a good course of action in this case ? Take over and deprecate ?
On Tue, May 8, 2018 at 9:10 PM, Marco Zocca
wrote: data-default alone is depended on by > 500 packages : http://packdeps.haskellers.com/reverse/data-default
Could you motivate why it's not a good idea ?
I can think of two reasons:
- It has no laws, so there's formal specification that tells us whether an instance is "correct" or not.
- Type classes are useful when there is a large family of generic operations that can work with them. For example, the utility functions in Control.Monad [1] are used in all kinds of Haskell programs. But there are no such generic operations that apply to all Default instances.
That said -- as you note, it's has quite a few dependents so it's great
On Tue, May 8, 2018 at 11:21 AM, Chris Wong
wrote: that someone is stepping up to maintain it regardless.
Chris
[1] https://hackage.haskell.org/package/base-4.11.1.0/docs/ Control-Monad.html#g:4
On Tue, May 8, 2018 at 11:02 AM, Christopher Allen
wrote: Is this something folks still think is a good idea? I purge Data.Default from projects I work on.
On Tue, May 8, 2018 at 3:58 AM, Marco Zocca
wrote: Dear all,
I've been increasingly relying on data-default-class, but sadly it doesn't look like it's currently maintained; there are some tickets
on
the github issue tracker that would need some attention.
I have tried contacting the authro/current maintainer Lukas Mai (CC'd) by email but have not received an answer so far (I hope he's doing well, btw).
This is my first public request for taking over the `data-default` family of packages:
data-default-class data-default-instances-base data-default-instances-containers data-default-instances-dlist data-default-instances-old-locale data-default
Kind regards, Marco Zocca (http://hackage.haskell.org/user/ocramz) _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
-- Chris Allen Currently working on http://haskellbook.com
Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
-- Chris Wong (https://lambda.xyz)
"I had not the vaguest idea what this meant and when I could not remember the words, my tutor threw the book at my head, which did not stimulate my intellect in any way." -- Bertrand Russell
Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.