1

假设我想映射 Java 代码:

package mypackage;

class A {
    public String[] values() {
       return new String[]{"one", "two"};
    }
}

对它的弗雷格对应物:

data AA = pure native mypackage.A where
    native values :: AA -> [String]

目前弗雷格抱怨:

error: incompatible types: String[] cannot be converted to TList

如何将 Java 数组映射到 Frege?

4

1 回答 1

3

该消息实际上来自 Java 编译器。

Java 数组对应的 Frege 类型

Foo[]

JArray Bar

其中Bar是 对应的 Frege 类型Foo

所以,在你的情况下,它应该是

JArray String

请注意,从 Frege 的角度来看,这是一个不可变数组。如果你想要一个可变数组,请使用

Mutable s (JArray String)

但是,当然,它只能在 ST monad 中使用。

以下是相关在线文档的链接:http ://www.frege-lang.org/doc/frege/prelude/PreludeArrays.html 因为这是 Prelude 的一部分,您无需导入任何内容即可使用它。

于 2015-10-29T23:36:34.537 回答