如何在Frege中处理二进制数据?

时间:2015-08-11 08:42:10

标签: frege

我是弗雷格的新手,虽然我知道Java和Haskell。

我正在移植一些使用ByteString的Haskell代码,我正试图找出在Frege中使用的内容。我假设我想使用其基础Java表示为byte[]的东西,但我不确定弗雷格是如何包装它的。

特别是,我浏览了PreludeArrays.fr,并注意到除了 PrimitiveArrayElement之外,每个原始Java类型都有byte的实例。

我觉得我有一些明显缺失的东西。我如何处理弗雷格的二进制数据?有没有如何做的例子?

1 个答案:

答案 0 :(得分:1)

实际上有这样一个例子。由于技术原因,它无法进入PreludeArrays。相反,它位于frege.java.Lang,其中引入了ByteShort

即使没有,你也可以说

instance PrimitiveArrayElement Byte

它应该有效。

关于你的问题:我认为可以安全地说JArray Byte对于任何数据的任何问题都应该没问题。另一个问题是它是否是最好的代表。例如,如果这些数据实际上是UTF8字符串,我认为转换为String将是可行的方法。

需要考虑的事项

  1. mapArrayfoldArray和朋友节省空间,但严格且有点慢,因为他们使用ST monad。
  2. 相反,mapfold相当快,但当然浪费了很多记忆。
  3. 我在frege.data.Hashmap中使用的方法是识别非常基本的数组操作并用Java实现它们(一个可以在线实现,甚至),并根据这些来编写程序的其余部分。

    您可能需要查看源代码以了解如何执行此操作。