将 Java 数组映射到 Frege

Mapping Java Array to Frege

假设我想映射 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 数组映射到弗雷格?

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

一个Java数组对应的弗雷格类型

Foo[]

JArray Bar

其中Bar是对应Foo的弗雷格类型。

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

JArray String

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

Mutable s (JArray String)

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

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