4
如何从Haskell的inline-c的C块中获取一个列表或数组?换句话说,如何在C中构建复杂数据并在Haskell中使用它。 事情是这样的:如何从Haskell的inline-c中的C块返回一个列表或数组?
foo :: IO [Int]
foo = do
what? <- [C.block| <what?> {
ints = calloc(10, sizeof(int));
// ...
return <what?>;
} |]
return <what?>
我可以换一个指针和一些Haskell的类型大小,但我想用在Haskell名单的工作,打印,编码在JSON等
假设数据被复制并分配内存可以被释放是否安全? – Igor
@Igor用'peekArray',是的。用'unsafeFromForeignPtr',no。 –
@Igor PS,[Haskell绑定到'malloc'和朋友已经存在](https://hackage.haskell.org/package/base-4.9.0.0/docs/Foreign-Marshal-Array.html#v:callocArray) 。 –