Proposal: Num instance for (a -> b)

Daniel Cartwright chessai1996 at gmail.com
Sun Nov 11 22:30:15 UTC 2018


I'm not quite sure the comparison is unjust - i was referring to +,-,*
giving strange error messages, not necessarily fromInteger. Recall that the
instance is Monoid b => Monoid (a -> b).

An example is a user might mistakenly type `mempty "text"`, which is just
`const mempty`, though this might not be what they mean (GHC 8.6 will give
the hole in `f :: Text -> Text; f x = _ x;` a suggestion of `mempty`, which
might certainly be confusing to a beginner). Similarly `2 4` might parse 2
as being applied to 4, if (a -> b) had a Num instance (correct me if i'm
wrong in saying thats how such a string might be parsed).

On Sun, Nov 11, 2018, 5:10 PM Oleg Grenrus <oleg.grenrus at iki.fi wrote:

> Monoid doesn't have fromInteger -like function. For example, we don't have
> FromString b => FromString (a -> b) instance.
>
> Unfortunately fromInteger is part of Num, so comparison with Monoid is
> unjust.
>
> Sent from my iPhone
>
> On 11 Nov 2018, at 23.44, Daniel Cartwright <chessai1996 at gmail.com> wrote:
>
> ANum seems to be just Data.Monoid.Ap.
> Also, I can see not wanting to worsen the error messages, though it is
> worth pointing out that we already have a Monoid instance with the same
> semantics, and a similar potential for confusing error messages.
>
> On Sun, Nov 11, 2018, 1:36 AM Dan Burton <danburton.email at gmail.com wrote:
>
>> -1, per the very confusing errors that would ensue.
>>
>> If this behavior is desired, you can use a newtype wrapper. As it
>> happens, this fits the pattern of ANum
>> <http://hackage.haskell.org/package/ANum>. (Any Applicative can be made
>> an instance of Num in this way.)
>>
>> -- Dan Burton
>>
>>
>> On Sun, Nov 11, 2018 at 12:28 AM Tom Murphy <amindfv at gmail.com> wrote:
>>
>>> On 11/11/18, Henning Thielemann <lemming at henning-thielemann.de> wrote:
>>> >
>>> > On Sun, 11 Nov 2018, Henning Thielemann wrote:
>>> >
>>> >> On Sat, 10 Nov 2018, Daniel Cartwright wrote:
>>> >>
>>> >>> relevant reddit comment
>>> >>> thread:
>>> https://www.reddit.com/r/haskell/comments/9vtis5/the_universe_of_discourse_i_hate_the_environment/e9f1lea?utm_so
>>> >>> urce=reddit-android
>>> >>
>>> >>
>>> https://wiki.haskell.org/index.php?title=Num_instance_for_functions&oldid=36632
>>> >>
>>> >> In short: It would make 2(x+y) no longer a type error but equivalent
>>> to 2.
>>> >> We
>>> >> would lose a lot of type safety for little syntactic gain.
>>> >
>>> > Btw. before adding more Wat instances please implement the GHC warning
>>> > about such instances:
>>> >     https://ghc.haskell.org/trac/ghc/ticket/11796
>>>
>>> This is my feeling as well.
>>>
>>> Tom
>>> _______________________________________________
>>> Libraries mailing list
>>> Libraries at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181111/742c3755/attachment.html>


More information about the Libraries mailing list