我如何在 Frege 中处理二进制数据?
How can I handle binary data in Frege?
我是弗雷格的新手,虽然我知道 Java 和 Haskell。
我正在移植一些使用 ByteString
的 Haskell 代码,我正在尝试弄清楚在 Frege 中使用什么。我假设我想要使用其底层 Java 表示为 byte[]
的东西,但我不确定弗雷格如何包装它。
特别是,我查看了 PreludeArrays.fr
,我注意到每个原始 Java 类型 除了 都有一个 PrimitiveArrayElement
的实例byte
.
我觉得我明显遗漏了什么。我如何着手处理 Frege 中的二进制数据?是否有任何示例说明如何这样做?
还真有这样的例子。由于技术原因,它不能在 PreludeArrays
中。相反,它位于 frege.java.Lang
中,其中引入了 Byte
和 Short
。
即使有 none,你也可以说
instance PrimitiveArrayElement Byte
它应该可以工作。
关于您的问题:我认为可以肯定地说 JArray Byte
应该可以解决任何数据问题。另一个问题是它是否是最好的表示。例如,如果这些数据实际上是 UTF8 字符串,我认为转换为 String
是可行的方法。
需要考虑的事情
mapArray
、foldArray
和朋友 space 高效,但严格且有点慢,因为他们使用 ST
monad。
- 相反,
map
和 fold
相当快,但当然会浪费大量内存。
我在 frege.data.Hashmap
中使用的一种方法是识别非常基本的数组操作并在 Java 中实现它们(甚至可以在线执行此操作),然后编写其余的程序方面的那些。
您可能想查看源代码以了解如何执行此操作。
我是弗雷格的新手,虽然我知道 Java 和 Haskell。
我正在移植一些使用 ByteString
的 Haskell 代码,我正在尝试弄清楚在 Frege 中使用什么。我假设我想要使用其底层 Java 表示为 byte[]
的东西,但我不确定弗雷格如何包装它。
特别是,我查看了 PreludeArrays.fr
,我注意到每个原始 Java 类型 除了 都有一个 PrimitiveArrayElement
的实例byte
.
我觉得我明显遗漏了什么。我如何着手处理 Frege 中的二进制数据?是否有任何示例说明如何这样做?
还真有这样的例子。由于技术原因,它不能在 PreludeArrays
中。相反,它位于 frege.java.Lang
中,其中引入了 Byte
和 Short
。
即使有 none,你也可以说
instance PrimitiveArrayElement Byte
它应该可以工作。
关于您的问题:我认为可以肯定地说 JArray Byte
应该可以解决任何数据问题。另一个问题是它是否是最好的表示。例如,如果这些数据实际上是 UTF8 字符串,我认为转换为 String
是可行的方法。
需要考虑的事情
mapArray
、foldArray
和朋友 space 高效,但严格且有点慢,因为他们使用ST
monad。- 相反,
map
和fold
相当快,但当然会浪费大量内存。
我在 frege.data.Hashmap
中使用的一种方法是识别非常基本的数组操作并在 Java 中实现它们(甚至可以在线执行此操作),然后编写其余的程序方面的那些。
您可能想查看源代码以了解如何执行此操作。