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