Eta 是否可以与 Java and/or Kotlin 互操作?
Is Eta interoprable with Java and/or Kotlin yet?
我一直在学习 Haskell,但在我的日常工作中我正在写作 Kotlin/Java。
我遇到了 Eta (https://eta-lang.org/),这是一种 Haskell 方言,可编译为 Java 字节代码并在 JVM 上运行。在网站上它声明它有:
Robust Interoperability
Eta has a strongly-typed Foreign Function Interface (FFI) that allows you to safely interoperate with Java.
但页面下方有一个 "Coming Soon" 部分,其中列出了互操作。所以我的问题是,在我开始设置开发环境的麻烦之前:
官方支持了吗?
"Coming soon" 是 "bindings generator"。 Eta has implemented syntax 用于 Java 互操作,但您需要为要调用的每个 Java 实体显式编写外部声明。例如。如链接示例中所示,一个 class like
public class Counter {
private int counter = 0;
private final int max;
public Counter(int max) { this.max = max; }
public int postIncrement() { return max == counter ? counter : counter++; }
}
需要一大块外国进口商品
data Counter = Counter @example.Counter deriving Class
foreign import java unsafe "@new" newCounter :: Int -> Java a Counter
foreign import java unsafe "postIncrement" postIncrement :: Java Counter Int
正如您可能猜到的那样,它最好是自动生成的。做那一代的程序是 WIP,而不是 FFI 本身。
我一直在学习 Haskell,但在我的日常工作中我正在写作 Kotlin/Java。
我遇到了 Eta (https://eta-lang.org/),这是一种 Haskell 方言,可编译为 Java 字节代码并在 JVM 上运行。在网站上它声明它有:
Robust Interoperability
Eta has a strongly-typed Foreign Function Interface (FFI) that allows you to safely interoperate with Java.
但页面下方有一个 "Coming Soon" 部分,其中列出了互操作。所以我的问题是,在我开始设置开发环境的麻烦之前:
官方支持了吗?
"Coming soon" 是 "bindings generator"。 Eta has implemented syntax 用于 Java 互操作,但您需要为要调用的每个 Java 实体显式编写外部声明。例如。如链接示例中所示,一个 class like
public class Counter {
private int counter = 0;
private final int max;
public Counter(int max) { this.max = max; }
public int postIncrement() { return max == counter ? counter : counter++; }
}
需要一大块外国进口商品
data Counter = Counter @example.Counter deriving Class
foreign import java unsafe "@new" newCounter :: Int -> Java a Counter
foreign import java unsafe "postIncrement" postIncrement :: Java Counter Int
正如您可能猜到的那样,它最好是自动生成的。做那一代的程序是 WIP,而不是 FFI 本身。