[Haskell-beginners] Antw.: Question about CFloat and Float

ch.gosch@googlemail.com ch.gosch at googlemail.com
Fri Apr 29 08:20:21 CEST 2011

Hi Alberto,
thanks for the hint and the link. Do you have any information on whether that will continue to work in the future? I somehow have a bad feeling about it because the C* versions of the types would then be unnecessary.

Thanks again,

----- Reply message -----
Von: "Alberto Ruiz" <aruiz at um.es>
An: "C Gosch" <ch.gosch at googlemail.com>
Cc: <beginners at haskell.org>
Betreff: [Haskell-beginners] Question about CFloat and Float
Datum: Do., Apr. 28, 2011 15:27

Hi Christian,

On 04/28/2011 02:27 PM, C Gosch wrote:
> Dear list members,
> I have the following problem: I have wrapped a C library using the FFI
> and c2hs.
> The C functions all take a bunch of pointers to C arrays of floats,
> doubles, or ints as arguments.
> Naturally, the Haskell representation of these is e.g.
>   Ptr CFloat
> or, for single values, CFloat.
> My question is: if I have an array, e.g. allocated with mallocArray, to
> Haskell Float values (Ptr Float),
> is the representation of Float exactly the same as for CFloat? Can I
> safely use Ptr Float where the C function
> expects the C type float* ?
> I assume that I can not, and in that case I would like to find a way to
> have Float on the Haskell side and CFloat on the C side.
> Any hint on how I would do that without copying data and without too
> large performance penalties?
> Thanks a lot,
> Christian

I think that in ghc you can assume the same representation for CFloat 
and CDouble, they are newtypes of Float and Double:


(I directly use arrays of Float and Double with C libraries without any 
problem). But Int may be different from CInt depending on the 
architecture, so we need explicit conversions.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110429/5cb22741/attachment.htm>

More information about the Beginners mailing list