我正在将 Haskell 绑定到图像加载库,并且我想尽可能避免复制。加载图像时,我从 C 库中取回包含图像数据的数据结构。现在,这个结构在所有意图和目的上都是不可变的,但是从它读取数据到 Haskell 是一个 IO 操作。是否可以使用 unsafePerformIO (或者可能是 unsafeDupablePerformIO 以获得更好的性能)来避免将内存复制到 Haskell 数组或类似数组中?当然,我需要将数据结构指针封装在 ForeignPtr 或类似内容中,并确保无法以任何其他方式访问或修改指针。
在这种情况下,惯例是什么?