我读到过将其元素存储在一个连续的内存区域中。我一直期望Vector会是Foreign.Storable的一个实例,或者至少会有一个函数:: Vector a -> Ptr (Vector a),但实际上只有unsafeToForeignPtr0:: Storable a => Vector a -> (ForeignPtr a, Int)。我的Haskell代码生成了一个Foreign.Storable列表,我想从C代码访问这个列表。Vector.Storable这样做
我在Haskell模块中有以下数据类型,我想编写一个可存储的实例,以便通过FFI与C一起使用它: TypeDouble Double | TypeAdd (MyType a) (MyType a) instance Storable a => Storable (MyType我认为实现这些函数的方式与在中相同,但只有当列表中
我想在Haskell中实现术语图,这样我就可以实现一个使用共享的术语重写引擎。我希望下面这样的事情有意义: t' = Op 'f' [Var 'x', Var 'y']in然后在重写过程中但是,我注意到了两件事:(1)这个模块叫做Foreign.Storable,所以它应该只用于FFI内容吗?(2)没有
我有一个名为ManagedValue的类型类,定义如下: type ManagedPtr a = (r :: *) | r -> a类型类型实例的类型,它也是ManagedValue类型类型的实例,但并不是所有的ManagedValue都是可存储的。但是,我不能将它定义为类似于instance Storable a => ManagedPtr a where ...的东西,因为G