我想为我正在编写的库提供一个“用户友好”的通用界面。看起来应该已经存在的东西,所以我不想重新发明轮子。
从本质上讲,该库是许多 C 函数的包装器,它们采用unsigned char[]
. 现在我正在使用vector
,因为它很容易理解如何使用Mutable
来分配和freeze
由库编写的 C 数组,但更流行的接口是ByteString
. 有没有一种透明地转换它们的好方法?和/或为他们两个提供通用接口的好方法?
例如,我希望能够编写一个函数
doIt :: ByteArrayLike ba => ba -> ba
ByteString
并让它以Vector Word8
相同的方式运行。