Hi All --

Say I have a foreign function:

foreign import ccall "statistical_c.h gengam"     c_gengam :: CDouble -> CDouble -> IO 
CDouble

that returns a random value parameterized by the two CDoubles.  clearly 
this must happen in IO since the return value will be different each time, 
and some global state stuff is getting modified on the C side to 
facilitate future random # generation.

However, I would like to wrap this into an essentially pure function, ala 
the Random class.  basically, i want to wrap this up as something like:

gengam :: RandomGen g => g -> Double -> Double -> (g, Double)

analogously to the normal random # generation stuff.

is there a safe way to do this?  one option, of course, is just to 
unsafePerformIO it and {-# NOINLINE #-} the call, but that is rather, uhm, 
unsafe, I believe.  it seems to me that something like this should be 
possible.

Any thoughts?

 - Hal


-- 
 Hal Daume III                                   | [EMAIL PROTECTED]
 "Arrest this man, he talks in maths."           | www.isi.edu/~hdaume

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to