NamedDefaults and relaxed defaults?

Hi, If I understand correctly, the traditional defaulting rules prevent defaulting variables with constraints like (Num a, Convertible a Double), but the NamedDefaults proposal would allow defaulting a ~ Double in this case due to the relaxed defaulting rules in section 2.5 of the proposal: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0409-ex... 1. Is there any plan to start implementing NamedDefaults? I saw the comment from Simon P-J that it would not be fun to implement because it might require orphan default declarations... so perhaps there's no plan to implement this? 2. Would it be worth adding a separate LANGUAGE option that just implements the relaxed defaulting rules in section 2.5? Specifically (a) allowing variables with multiparameter constraints and (b) allowing variables with constraints that are not in the Prelude. 3. Am I correct in assuming that the relaxed defaulting rules require NamedDefaults to be enabled in the importing module, and not just in the imported model? -BenRI

No: I don't know of anyone planning to implement this proposal -- indeed I had forgotten about it -- so it's waiting for someone to take it on. There are some slightly tricky loose ends around defaulting that it'd be good to nail down first: https://gitlab.haskell.org/ghc/ghc/-/issues/20686 Simon On Wed, 26 Jul 2023 at 11:00, Benjamin Redelings < benjamin.redelings@gmail.com> wrote:
Hi,
If I understand correctly, the traditional defaulting rules prevent defaulting variables with constraints like (Num a, Convertible a Double), but the NamedDefaults proposal would allow defaulting a ~ Double in this case due to the relaxed defaulting rules in section 2.5 of the proposal:
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0409-ex...
1. Is there any plan to start implementing NamedDefaults? I saw the comment from Simon P-J that it would not be fun to implement because it might require orphan default declarations... so perhaps there's no plan to implement this?
2. Would it be worth adding a separate LANGUAGE option that just implements the relaxed defaulting rules in section 2.5? Specifically (a) allowing variables with multiparameter constraints and (b) allowing variables with constraints that are not in the Prelude.
3. Am I correct in assuming that the relaxed defaulting rules require NamedDefaults to be enabled in the importing module, and not just in the imported model?
-BenRI _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Thanks! It looks like ExtendedDefaultRules already allows default variables that co-occur with multiparameter constraints and non-standard classes. So maybe that solves my issue with (Num a, Convertible a Double). Does the defaulting for RuntimeRep interact with class defaulting? -BenRI On 7/26/23 12:11 PM, Simon Peyton Jones wrote:
No: I don't know of anyone planning to implement this proposal -- indeed I had forgotten about it -- so it's waiting for someone to take it on.
There are some slightly tricky loose ends around defaulting that it'd be good to nail down first: https://gitlab.haskell.org/ghc/ghc/-/issues/20686
Simon
On Wed, 26 Jul 2023 at 11:00, Benjamin Redelings
wrote: Hi,
If I understand correctly, the traditional defaulting rules prevent defaulting variables with constraints like (Num a, Convertible a Double), but the NamedDefaults proposal would allow defaulting a ~ Double in this case due to the relaxed defaulting rules in section 2.5 of the proposal:
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0409-ex...
1. Is there any plan to start implementing NamedDefaults? I saw the comment from Simon P-J that it would not be fun to implement because it might require orphan default declarations... so perhaps there's no plan to implement this?
2. Would it be worth adding a separate LANGUAGE option that just implements the relaxed defaulting rules in section 2.5? Specifically (a) allowing variables with multiparameter constraints and (b) allowing variables with constraints that are not in the Prelude.
3. Am I correct in assuming that the relaxed defaulting rules require NamedDefaults to be enabled in the importing module, and not just in the imported model?
-BenRI _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

On 7/26/23 6:46 PM, Benjamin Redelings wrote:
Thanks!
It looks like ExtendedDefaultRules already allows default variables that co-occur with multiparameter constraints and non-standard classes. So maybe that solves my issue with (Num a, Convertible a Double).
It looks like (Num a, Convertible Double a) would work differently: - with ExtendedDefaultRules, GHC would pick a ~ Integer (ignoring the Convertible constraint) and then complain that Convertible Double Integer has no instance. - with NamedDefaults, GHC would reject a ~ Integer because Convertible Double Integer fails and then choose a ~ Double, which succeeds. -BenRI
Does the defaulting for RuntimeRep interact with class defaulting?
-BenRI
On 7/26/23 12:11 PM, Simon Peyton Jones wrote:
No: I don't know of anyone planning to implement this proposal -- indeed I had forgotten about it -- so it's waiting for someone to take it on.
There are some slightly tricky loose ends around defaulting that it'd be good to nail down first: https://gitlab.haskell.org/ghc/ghc/-/issues/20686
Simon
On Wed, 26 Jul 2023 at 11:00, Benjamin Redelings
wrote: Hi,
If I understand correctly, the traditional defaulting rules prevent defaulting variables with constraints like (Num a, Convertible a Double), but the NamedDefaults proposal would allow defaulting a ~ Double in this case due to the relaxed defaulting rules in section 2.5 of the proposal:
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0409-ex...
1. Is there any plan to start implementing NamedDefaults? I saw the comment from Simon P-J that it would not be fun to implement because it might require orphan default declarations... so perhaps there's no plan to implement this?
2. Would it be worth adding a separate LANGUAGE option that just implements the relaxed defaulting rules in section 2.5? Specifically (a) allowing variables with multiparameter constraints and (b) allowing variables with constraints that are not in the Prelude.
3. Am I correct in assuming that the relaxed defaulting rules require NamedDefaults to be enabled in the importing module, and not just in the imported model?
-BenRI _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (2)
-
Benjamin Redelings
-
Simon Peyton Jones