Generalizing some type signatures involving Int

Carter Schonwald carter.schonwald at gmail.com
Thu Nov 15 06:30:19 UTC 2018


Agreed.

As David and Eric both say:
For in heap / memory size structures, it’s impossible to ever have an in
ram structure that exceeds the largest positive value for Int.  And ghc is
also quite good at optimizing int.

1) what is your application domain / context ?

2) all of these are implementable in user space, what design /
implementation experiments have you done ?

It’s worth mentioning that RULES style optimization in this case would only
run AFTER it’s been specialized to a concrete type.  And that short of lots
of specialize pragmas or inlining , the generic code will thusly miss out
on all sorts of unboxong etc.

On Tue, Nov 13, 2018 at 10:31 PM David Feuer <david.feuer at gmail.com> wrote:

> That won't help whatsoever in most cases. The matter has been discussed
> several times with no progress. If you want to add RULES for Int8, Int16,
> ..., Word, Word8, ..., and Natural to match the ones for Int and Integer,
> that would make sense, but the basic problem will remain for unmentioned
> types.
>
> On Tue, Nov 13, 2018, 10:24 PM Vanessa McHale <vanessa.mchale at iohk.io
> wrote:
>
>> This is perhaps not the right place, but if there are benchmarks proving
>> that genericLength is slower than it should be, it should be easy to add a
>> SPECIALIZE pragma.
>> On 11/13/18 9:13 PM, David Feuer wrote:
>>
>> genericLength is extremely inefficient for typical numeric types. Int is
>> a rather sad type for these things; it really should be Word. But that may
>> not be worth fixing.
>>
>> On Tue, Nov 13, 2018, 9:51 PM Evan Laforge <qdunkan at gmail.com wrote:
>>
>>> You can already get these as Data.List.genericLength and
>>> Data.List.genericReplicate
>>>
>>> As for changing the prelude ones, this would probably cause a lot of
>>> busywork.  Where I work we compile with -Werror and -Wtype-defaults,
>>> so a lot of places might have to get type annotations.
>>> On Tue, Nov 13, 2018 at 5:19 PM Vanessa McHale <vanessa.mchale at iohk.io>
>>> wrote:
>>> >
>>> > Would it be possible to generalize replicate and length to have type
>>> > signatures
>>> >
>>> > replicate :: Integral a => a -> b -> [b]
>>> >
>>> > and
>>> >
>>> > length :: (Integral a, Foldable t) => t b -> a
>>> >
>>> > ?
>>> >
>>> > There have been a few instances where such a thing would have been
>>> > useful to me.
>>> >
>>> > Cheers
>>> >
>>> >
>>> > _______________________________________________
>>> > 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/20181115/76170711/attachment.html>


More information about the Libraries mailing list