[Haskell-cafe] GHC.Ptr, Foreign.Storable, Data.Storable.Endian, looking for good examples of usage

Antoine Latter aslatter at gmail.com
Mon Jan 10 17:36:17 CET 2011


On Mon, Jan 10, 2011 at 10:17 AM, Aaron Gray <aaronngray.lists at gmail.com> wrote:
> On 10 January 2011 16:13, Daniel Fischer <daniel.is.fischer at googlemail.com>
> wrote:
>>
>> On Monday 10 January 2011 16:45:36, Aaron Gray wrote:
>> >
>> > This is interesting, what does the following line do :-
>> >
>> >     data Int24 = I24# Int# deriving (Eq, Ord)
>> >
>> > regarding the I24# and Int#, are these inbuilt ?
>>
>> Int# is the raw machine int (4 or 8 bytes) and I24# is the constructor.
>> GHC
>> uses the magic hash '#' to denote raw unboxed types (and the constructors
>> making ordinary boxed Haskell types from these, e.g. there's
>>
>> data Int = I# Int#
>> data Word = W# Word#
>> data Double = D# Double#
>>
>> and more defined in base [GHC.Types, GHC.Word]).
>
> So the 24 bit value is actually stored as a 32bit value. Meaning I will have
> to do my own IO reader and writer code to a ByteString.
> Thanks,
> Aaron
>

I don't think so - the Storable instance provided for the Int24 type
peeks and pokes 24-bit values. At least, that what I understand John's
earlier message to mean.

> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>



More information about the Haskell-Cafe mailing list