[Haskell-cafe] bytestring vs. uvector

Manlio Perillo manlio_perillo at libero.it
Fri Mar 13 10:21:41 EDT 2009

Don Stewart ha scritto:
> bulat.ziganshin:
>> Hello Don,
>> Wednesday, March 11, 2009, 12:12:07 AM, you wrote:
>>> Right, so my point stands: there's no difference now. If you can write a
>>> Storable instance, you can write a UA et al instance.
>> yes, if there is some class provided for this and not just hard-coded
>> 4 or so base types 
> That's right. For example (supporting even pairs):
>     instance (RealFloat a, UA a) => UA (Complex a) where
>       newtype UArr  (Complex a)   = UAComplex  (UArr (a :*: a))
>       newtype MUArr (Complex a) s = MUAComplex (MUArr (a :*: a) s)

You also have to add instance for UIO:

     instance (RealFloat a, UIO a) => UIO (Complex a) where
         hPutU h (UAComplex arr) = hPutU h arr
         hGetU h                 = do arr <- hGetU h
                                      return (UAComplex arr)

With Storable, this should not be required; you just have to write an 
instance for the Storable class.

Regards  Manlio

More information about the Haskell-Cafe mailing list