[Haskell-cafe] C binding <-> safer haskell API
PICCA Frederic-Emmanuel
frederic-emmanuel.picca at synchrotron-soleil.fr
Thu Feb 10 09:30:18 UTC 2022
Hello,
I am in this case, the Cube C struct contains at least two realy big arrays.
I wan to modify them in place.
> If however always copying the cube is too expensive, then you can take
> an approach similar to that used in Array or Vector, where Cubes are
> available in both immutable and mutable forms, with freeze, thaw,
> unsafeFreeze and unsafeThaw operations connecting the two.
>
> data Cube = Cube ...
> data STCube s = STCube s ...
> data IOCube = IOCube ...
>
> Mutable cubes can be modified in place in either the IO or ST Monads.
I like this idea, I looked a t the MVector implementation
data MVector s a = MVector {-# UNPACK #-} !Int -- ^ Offset in underlying array
{-# UNPACK #-} !Int -- ^ Size of slice
{-# UNPACK #-} !(MutableArray s a) -- ^ Underlying array
deriving ( Typeable )
type IOVector = MVector RealWorld
type STVector s = MVector s
I imagine that in my case I can can just define a.
data MCube s = MCube (ForeignPtr C'HklBinocularsCube)
and then
type IOCube = NCube RealWorld
I a
>
> --
> VIktor.
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
More information about the Haskell-Cafe
mailing list