如何在 Frege 中声明带有类型变量的本机接口?
How do I declare a native interface with type variables in Frege?
我想在 Frege 中本地声明一个具有通用类型的 java 接口。例如,让我们从 JavaFX 获取一个 ObservableList。
不考虑泛型类型 E,它可以定义
data ObservableList = mutable native javafx.collections.ObservableList where
但是当我尝试
data ObservableList e = mutable native javafx.collections.ObservableList where
native addAll :: ObservableList e -> MutableIO (JArray e) -> IO Bool
查看完整示例here
我明白了
kind error, type constructor `ObservableList` has kind ?->generic, expected was *
建议的处理方式是什么?
这很有趣,因为它开箱即用:
ingo@freguntu:~/Frege/frege$ java -jar ../eclipse-plugin/lib/fregec.jar -version
3.23.247-gd535935
runtime 0.064 wallclock seconds.
ingo@freguntu:~/Frege/frege$ cat frege/Whosebug.fr
package Whosebug where
data ObservableList e = mutable native javafx.collections.ObservableList where
native addAll :: ObservableList e -> MutableIO (JArray e) -> IO Bool
ingo@freguntu:~/Frege/frege$ java -jar ../eclipse-plugin/lib/fregec.jar -d /tmp frege/Whosebug.fr
calling: javac -cp ../eclipse-plugin/lib/fregec.jar:/tmp -d /tmp -sourcepath . -encoding UTF-8 /tmp/Whosebug.java
Note: /tmp/Whosebug.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
runtime 1.897 wallclock seconds.
ingo@freguntu:~/Frege/frege$
可以肯定的是,java 编译器抱怨 Frege 发出的非通用代码,但没有必要再次对其进行类型检查,只是更弱:)
请尝试使用上一个eclipse插件自带的fregec,应该可以。
此外,在 eclipse 中,请确保您没有被不会消失的错误标记所愚弄。例如,当您保存时,错误会变得粘滞,并且如果不重新编译就不会消失。
我想在 Frege 中本地声明一个具有通用类型的 java 接口。例如,让我们从 JavaFX 获取一个 ObservableList。
不考虑泛型类型 E,它可以定义
data ObservableList = mutable native javafx.collections.ObservableList where
但是当我尝试
data ObservableList e = mutable native javafx.collections.ObservableList where
native addAll :: ObservableList e -> MutableIO (JArray e) -> IO Bool
查看完整示例here
我明白了
kind error, type constructor `ObservableList` has kind ?->generic, expected was *
建议的处理方式是什么?
这很有趣,因为它开箱即用:
ingo@freguntu:~/Frege/frege$ java -jar ../eclipse-plugin/lib/fregec.jar -version
3.23.247-gd535935
runtime 0.064 wallclock seconds.
ingo@freguntu:~/Frege/frege$ cat frege/Whosebug.fr
package Whosebug where
data ObservableList e = mutable native javafx.collections.ObservableList where
native addAll :: ObservableList e -> MutableIO (JArray e) -> IO Bool
ingo@freguntu:~/Frege/frege$ java -jar ../eclipse-plugin/lib/fregec.jar -d /tmp frege/Whosebug.fr
calling: javac -cp ../eclipse-plugin/lib/fregec.jar:/tmp -d /tmp -sourcepath . -encoding UTF-8 /tmp/Whosebug.java
Note: /tmp/Whosebug.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
runtime 1.897 wallclock seconds.
ingo@freguntu:~/Frege/frege$
可以肯定的是,java 编译器抱怨 Frege 发出的非通用代码,但没有必要再次对其进行类型检查,只是更弱:)
请尝试使用上一个eclipse插件自带的fregec,应该可以。
此外,在 eclipse 中,请确保您没有被不会消失的错误标记所愚弄。例如,当您保存时,错误会变得粘滞,并且如果不重新编译就不会消失。