haskell - Eta 可以与 Java 和/或 Kotlin 互操作吗?

标签 haskell functional-programming jvm eta

我一直在学习 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. 

但页面下方有一个“即将推出”部分,其中列出了互操作性。所以我的问题是,在我开始设置开发环境的麻烦之前:

官方支持吗?

最佳答案

“即将推出”的是“绑定(bind)生成器”。 Eta has implemented syntax对于 Java 互操作,但您需要为要调用的每个 Java 实体显式编写外部声明。例如。如链接示例中所示,类似的类

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 - Eta 可以与 Java 和/或 Kotlin 互操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59795708/

相关文章:

java - 如何在 scala 中使用函数式编程过滤列表?

garbage-collection - 一个简单用例的 JVM GC 设置

java - 可以将多种语言组合成一个二进制文件吗?

haskell - 为什么 Haskell 不允许两个数据构造函数共享 "Const"和其他定义的数据属性?

haskell - 将 do 表示法转换为 bind 表示法

haskell - 在 Haskell 的类型声明中符号 `!` 是什么意思?

haskell - 如何理解《纯函数式数据结构》中的分段二叉堆

java - 迁移到 64 位后 JVM 崩溃

haskell - 函数声明中的模式匹配中的括号 Haskell

haskell - 如何修复 Haskell 上输入 ‘->’ 的解析错误?