Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Haskell中的外部阵列Marshall Ptr Ptr_Arrays_Haskell_Marshalling_Ffi - Fatal编程技术网

Arrays Haskell中的外部阵列Marshall Ptr Ptr

Arrays Haskell中的外部阵列Marshall Ptr Ptr,arrays,haskell,marshalling,ffi,Arrays,Haskell,Marshalling,Ffi,我正在尝试创建一个列表列表,或者从Ptr Ptr b创建一个[[b]],通过FFI从C代码传入。因此,本质上是从二维C数组创建一个列表列表 我的逻辑要求将peekArray应用于Ptr Ptr b,首先获得[Ptr b],然后将peekArray应用于[Ptr b]中的每个元素,以获得[[b]] 我对peekArray的第一次调用似乎给了我[Ptr b]没有问题,但当我试图处理该列表中的每个Ptr b时,Haskell给了我一个错误: 无法将预期类型“[t0]”与实际类型“IO[a0]”匹配 在

我正在尝试创建一个列表列表,或者从Ptr Ptr b创建一个[[b]],通过FFI从C代码传入。因此,本质上是从二维C数组创建一个列表列表

我的逻辑要求将peekArray应用于Ptr Ptr b,首先获得[Ptr b],然后将peekArray应用于[Ptr b]中的每个元素,以获得[[b]]

我对peekArray的第一次调用似乎给了我[Ptr b]没有问题,但当我试图处理该列表中的每个Ptr b时,Haskell给了我一个错误:

无法将预期类型“[t0]”与实际类型“IO[a0]”匹配 在调用“peekArray”的返回类型中

我对这两个调用使用的peekArray方法相同,只是第二次在列表元素上执行它:

c <- peekArray q n
c

\x y ptr -> join $ fmap (mapM (peekArray y)) (peekArray x ptr)

\x y ptr->do
xs Int->Int->Ptr(Ptr a)->IO[[a]]
,我相信这就是您想要的

\x y ptr -> do 
  xs <- peekArray x ptr
  join $ mapM (peekArray y) xs