Haskell 如何最好地在ByTestRing上提供通用接口?

Haskell 如何最好地在ByTestRing上提供通用接口?,haskell,Haskell,我想为我正在编写的库提供一个“用户友好”的通用界面。这似乎是应该已经存在的东西,所以我不想重新发明轮子 从本质上讲,该库是许多C函数的包装器,这些C函数接受无符号字符[]。现在我正在使用vector,因为很容易理解如何使用Mutable分配和freeze库编写的C数组,但是更流行的接口应该是ByteString。有没有一种透明地转换它们的好方法?和/或为两者提供通用接口的好方法 例如,我希望能够编写一个函数 doIt :: ByteArrayLike ba => ba -> ba

我想为我正在编写的库提供一个“用户友好”的通用界面。这似乎是应该已经存在的东西,所以我不想重新发明轮子

从本质上讲,该库是许多C函数的包装器,这些C函数接受
无符号字符[]
。现在我正在使用
vector
,因为很容易理解如何使用
Mutable
分配和
freeze
库编写的C数组,但是更流行的接口应该是
ByteString
。有没有一种透明地转换它们的好方法?和/或为两者提供通用接口的好方法

例如,我希望能够编写一个函数

doIt :: ByteArrayLike ba => ba -> ba

并让它在
ByteString
Vector Word8
上进行相同的操作。

我不确定您想要对
ByteString
Vector
进行什么样的操作,但是您可以看看
lens
包,它提供了对这两种语言的通用操作

也许可以为
向量
实现一个
IsByteString
实例?请参见

查看和朋友,以及不复制的不安全版本。也许这已经足够近了。