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

David Feuer david.feuer at gmail.com
Mon Oct 29 14:10:05 UTC 2018


On Mon, Oct 29, 2018, 10:05 AM Sven Panne <svenpanne at gmail.com> wrote:

> Am Mo., 29. Okt. 2018 um 14:27 Uhr schrieb Daniel Cartwright <
> chessai1996 at gmail.com>:
>
>> 'Ptr Void' is not a pointer to a value of type 'Void'; there are no
>> values of type 'Void': this type is nonsensical.
>>
>
> That's the whole point, and it actually makes sense: If you see "Ptr
> Void", you can't do much with it, apart from passing it around or using
> castPtr on it. This is exactly what should be achieved by using "Ptr Void"
> in an API. This is basically the same as "void *" in C/C++.
>

No, it does not make sense. The approximate equivalent of C's void* is Ptr
Any. Ptr Void promises to give you anything you want on dereference, which
is nonsense.


> You can't store or read "()", so the same holds as for Void (which didn't
> exist when the FFI was created IIRC).
>

Sure you can. Storing () does nothing and reading it gives (). Our () is
somewhat similar to C's void return type.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181029/935082db/attachment.html>


More information about the Libraries mailing list