Boxed foreign prim

Edward Kmett ekmett at gmail.com
Tue Mar 13 16:07:10 CET 2012


On Tue, Mar 13, 2012 at 4:57 AM, Simon Marlow <marlowsd at gmail.com> wrote:

> On 12/03/2012 14:22, Edward Kmett wrote:
>
>> On Mon, Mar 12, 2012 at 6:45 AM, Simon Marlow <marlowsd at gmail.com
>> <mailto:marlowsd at gmail.com>> wrote:
>>        But I can only pass unboxed types to foreign prim.
>>
>>        Is this an intrinsic limitation or just an artifact of the use
>> cases
>>        that have presented themselves to date?
>>
>>    It's an intrinsic limitation - the I# box is handled entirely at the
>>    Haskell level, primitives only deal with primitive types.
>>
>> Ah. I was reasoning by comparison to atomicModifyMutVar#, which deals
>> with unboxed polymorphic types, and even lies with a too general return
>> type. Though the result there is returned in an unboxed tuple, the
>> argument is passed unboxed.
>>
>> Is that implemented specially?
>>
>
> I'm a little bit confused.
>
> atomicModifyMutVar#
>   :: MutVar# s a -> (a -> b) -> State# s -> (# State# s, c #)



> Is the "unboxed polymorphic type" you're referring to the "MutVar# s a"?
>  Perhaps the confusion is around the term "unboxed" - we normally say that
> MutVar# is "unlifted" (no _|_), but it is not "unboxed" because its
> representation is a pointer to a heap object.


I was talking about the (a -> b). I used it because the extraction of 'c'
rather than a proper pair was closest to my situation. A less confused
example might be newArray# which accepts a polymorphic 'a'.


> The problem is, that can't be done reliably.  For dataToTag# the compiler
> automatically inserts the seq just before code generation if it can't prove
> that the argument is already evaluated, I think we would want to do the
> same thing for unsafeField#.
>

Fair enough.

Thanks again.

-Edward
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20120313/90a4af3b/attachment.htm>


More information about the Glasgow-haskell-users mailing list