[Haskell-cafe] Defining a type depending on the word size of platform

2011-01-02 Thread Robert Clausecker
Hi guys!

I'm working on a random generator package and want to ask, whether it's
possible to generate a type like Int, that can have different sizes at
runtime.

Motivation:

The package ships to generators, one for 32 (lets name it MyGen32) and
one for 64 bits (MyGen64). As it is not good for performance to use the
wrong one, I also want to provide a type MyGen, that is either a type
synonym for MyGen32 or MyGen64, depending on the platform. Any ideas how
to do this at compile time? I want this to compile with Cabal so that
anybody can download it as a package.

I guess the easiest way would be to use CPP, but is there any flag for
the wordsize?

Yours, Robert Clausecker


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Defining a type depending on the word size of platform

2011-01-02 Thread Daniel Fischer
On Sunday 02 January 2011 13:45:13, Robert Clausecker wrote:

 I guess the easiest way would be to use CPP, but is there any flag for
 the wordsize?

Not directly, but I think

{-# LANGUAGE CPP #-}

#include MachDeps.h

#if WORD_SIZE_IN_BITS == 32

type MyGen = MyGen32

#else// GHC only works with 32- and 64-bit words

type MyGen = MyGen64

#endif

should do it.

MachDeps.h ties you to GHC of course, if you want it to work on other 
compilers too, I guess you need a configure script.



___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Defining a type depending on the word size of platform

2011-01-02 Thread Diego Souza
Hi,

maybe you have already considered this and dropped it out for whenever
reasons. Anyways, what if you stick with Int or Data.Word.Word types and use
Data.Bits.bitSize or maxBound to check in runtime what the word size is. It
might be easier than using CPP extension.

~dsouza

On Sun, Jan 2, 2011 at 11:16 AM, Daniel Fischer 
daniel.is.fisc...@googlemail.com wrote:

 On Sunday 02 January 2011 13:45:13, Robert Clausecker wrote:
 
  I guess the easiest way would be to use CPP, but is there any flag for
  the wordsize?

 Not directly, but I think

 {-# LANGUAGE CPP #-}

 #include MachDeps.h

 #if WORD_SIZE_IN_BITS == 32

 type MyGen = MyGen32

 #else// GHC only works with 32- and 64-bit words

 type MyGen = MyGen64

 #endif

 should do it.

 MachDeps.h ties you to GHC of course, if you want it to work on other
 compilers too, I guess you need a configure script.



 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




-- 
~dsouza
yahoo!im: paravinicius
gpg key fingerprint: 71B8 CE21 3A6E F894 5B1B  9ECE F88E 067F E891 651E
gpg pub key: http://bitforest.org/~dsouza/pub/gpg-pubkey.txt
authorized_keys: http://bitforest.org/~dsouza/pub/authorized_keys.txt
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe