Proposal: Num instance for (a -> b)

Daniel Cartwright chessai1996 at gmail.com
Sun Nov 11 22:42:20 UTC 2018


Sorry, the parsing is tied to fromInteger. So i see what you mean about the
poor errors not being as comparable. Henning and another brought up a good
point, that either users ought to be warned or it would go in its own
module ala Text.Show.Function.

On Sun, Nov 11, 2018, 5:30 PM Daniel Cartwright <chessai1996 at gmail.com
wrote:

> 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/b44d3334/attachment.html>


More information about the Libraries mailing list