将 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 的一部分,所以您无需导入任何内容即可使用它。
假设我想映射 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 的一部分,所以您无需导入任何内容即可使用它。