haskell - 如何最好地提供字节串上的通用接口(interface)?

标签 haskell

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

本质上,该库是许多采用 unsigned char[] 的 C 函数的包装器。现在我正在使用vector,因为很容易理解如何使用Mutable来分配和卡住由库编写的C数组,但更流行的接口(interface)是ByteString。有没有好的方法可以透明地转换它们?和/或为它们提供通用接口(interface)的好方法?

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

doIt :: ByteArrayLike ba => ba -> ba

并使其对 ByteStringVector Word8 进行相同的操作。

最佳答案

我不确定您想要对 ByteStringVector 进行什么样的操作,但您可以查看 lens 包,它提供了对两者的通用操作。

也许可以为 Vector 实现一个 IsByteString 实例?请参阅here

关于haskell - 如何最好地提供字节串上的通用接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010031/

相关文章:

haskell - 最接近于 Haskell 中的 Prolog atom 或 Lisp 符号

c - Haskell 外来类型的惯用用法?

haskell - 使数据类型为 * -> * 这不是仿函数

Haskell hGetLine 和空字符

haskell - 为什么第一个 Haskell 函数无法处理无限列表,而第二个代码段在无限列表中成功?

haskell - 我如何使用没有 case-of 的守卫重写这个 Haskell?

haskell - 为 GHC.TypeLits.Nat 编写 AbsDiff

haskell - Haskell 中 Eq 子类的默认定义

haskell - 如何在 Haskell 中将 IO 添加到我自己的 monad?

haskell - 从 Snap 访问 MongoDB