将Java数组映射到Frege
假设我想映射Java代码:将Java数组映射到Frege,java,arrays,frege,Java,Arrays,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 type
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?消息实际上来自Java编译器 对应于Java数组的Frege类型
Foo[]
是
其中,Bar
是对应于Foo
的弗雷格类型
所以,在你的情况下,应该是这样
JArray String
请注意,从Frege的角度来看,这是一个不可变的数组。
如果需要可变数组,请使用
Mutable s (JArray String)
但是,当然,它只能用于圣莫纳德
以下是相关在线文档的链接:
因为这是Prelude的一部分,所以使用它不需要导入任何内容。不仅Frege抱怨Java代码无效。讽刺的是,出于同样的原因。数组和列表是不同的类型…我错了。我没有复制/粘贴。我真的是指数组。感谢Ingo修复示例:)
Mutable s (JArray String)