Proposal: Move primitive-Data.Primitive.Addr API into base

Daniel Cartwright chessai1996 at gmail.com
Fri Oct 26 00:27:14 UTC 2018


Now, one could argue that `Ptr ()` isn't a lie, it sort of reads like C's
void pointer. But surely something like `Ptr Word8` is a lie, when it is
not actually a Ptr to Word8 values.

On Thu, Oct 25, 2018 at 8:11 PM Daniel Cartwright <chessai1996 at gmail.com>
wrote:

> yes, only the type and its instances should be moved as far as i'm aware.
>
> Also, it's more than just base.
>
> this Ptr is a lie:
> https://hackage.haskell.org/package/ghc-compact-0.1.0.0/docs/GHC-Compact-Serialized.html#t:SerializedCompact
> these Ptrs are lies:
> https://hackage.haskell.org/package/base-4.12.0.0/docs/GHC-IO-Handle.html
> in GHC.Stats, the foreign import "getRTSStats" has `Ptr () -> IO ()`, this
> Ptr () is also a lie
>
> These are just off the top of my head, there are more
>
>
> On Thu, Oct 25, 2018 at 6:46 PM Carter Schonwald <
> carter.schonwald at gmail.com> wrote:
>
>> hrmm, what are the pieces of base that are using Ptr when they really
>> should be using Addr? This would help me understand what would be made
>> better in base :)
>>
>> On Thu, Oct 25, 2018 at 6:19 PM David Feuer <david.feuer at gmail.com>
>> wrote:
>>
>>> We shouldn't really need to move anything into base except Addr and its
>>> base instances.
>>>
>>> On Oct 25, 2018 5:59 PM, "Carter Schonwald" <carter.schonwald at gmail.com>
>>> wrote:
>>>
>>> Indeed.  The monad transformer instances for primmonad need to live in
>>> primmonad OR transformers to avoid orphans.
>>>
>>> Either way, unless transformers moves into base (unlikely), no way
>>> anything using prim monad will.
>>>
>>> On Thu, Oct 25, 2018 at 3:34 PM Andrew Martin <andrew.thaddeus at gmail.com>
>>> wrote:
>>>
>>>> I like the idea of moving the type Addr into base. But we cannot move
>>>> the entire module since it has functions that talk about PrimMonad, and we
>>>> definitely don't want to move that into base.
>>>>
>>>> On Thu, Oct 25, 2018 at 11:25 AM Daniel Cartwright <
>>>> chessai1996 at gmail.com> wrote:
>>>>
>>>>> Motivation: There are a lot of places in base where 'Ptr a' is used in
>>>>> place of 'Addr', because in base there is no 'Addr', only 'Addr#'. The
>>>>> problem lies in the fact that many of these uses of 'Ptr a' are lying; the
>>>>> 'a' value is meaningless. Authors of functions therein have used things
>>>>> like 'Ptr ()', 'Ptr Word8', 'Ptr a', but these types do not mean what they
>>>>> say they mean - they're just Addr. There are probably other motivations for
>>>>> this that I can't think of off the top of my head right now.
>>>>> _______________________________________________
>>>>> Libraries mailing list
>>>>> Libraries at haskell.org
>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>>>
>>>>
>>>>
>>>> --
>>>> -Andrew Thaddeus Martin
>>>> _______________________________________________
>>>> 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/20181025/1bd47bb1/attachment.html>


More information about the Libraries mailing list