Haskell 如何最好地在ByTestRing上提供通用接口?
我想为我正在编写的库提供一个“用户友好”的通用界面。这似乎是应该已经存在的东西,所以我不想重新发明轮子 从本质上讲,该库是许多C函数的包装器,这些C函数接受Haskell 如何最好地在ByTestRing上提供通用接口?,haskell,Haskell,我想为我正在编写的库提供一个“用户友好”的通用界面。这似乎是应该已经存在的东西,所以我不想重新发明轮子 从本质上讲,该库是许多C函数的包装器,这些C函数接受无符号字符[]。现在我正在使用vector,因为很容易理解如何使用Mutable分配和freeze库编写的C数组,但是更流行的接口应该是ByteString。有没有一种透明地转换它们的好方法?和/或为两者提供通用接口的好方法 例如,我希望能够编写一个函数 doIt :: ByteArrayLike ba => ba -> ba
无符号字符[]
。现在我正在使用vector
,因为很容易理解如何使用Mutable
分配和freeze
库编写的C数组,但是更流行的接口应该是ByteString
。有没有一种透明地转换它们的好方法?和/或为两者提供通用接口的好方法
例如,我希望能够编写一个函数
doIt :: ByteArrayLike ba => ba -> ba
并让它在
ByteString
和Vector Word8
上进行相同的操作。我不确定您想要对ByteString
和Vector
进行什么样的操作,但是您可以看看lens
包,它提供了对这两种语言的通用操作
也许可以为向量
实现一个IsByteString
实例?请参见查看和朋友,以及不复制的不安全版本。也许这已经足够近了。