2012-03-10 10 views
13

Các giải pháp hiện tại cho tương tác Haskell/Java là gì? Tôi đã xem tờ báo về Lambada của Meijer và Finne. Có một dự án gọi là GCJNI, nhưng nó có vẻ không còn tồn tại - các liên kết đến nó bị hỏng. Có cái gì mà người ta có thể sử dụng ra khỏi hộp?Khả năng tương tác Haskell Java

+2

liên quan: http://stackoverflow.com/questions/2141148/best-way -to-call-haskell-functions-from-within-java http://stackoverflow.com/questions/7961335/calling-haskell-from-java-with-c-in-between http://stackoverflow.com/questions/4988598/how-can-i-run-my-haskell-functions-through-java –

+1

Không chính xác Haskell, nhưng gần như - http://code.google.com/p/frege - và nó biên dịch sang Java – Ingo

Trả lời

9

Sử dụng GHC FFI bạn có thể tạo shared library để xuất các chức năng từ vùng đất Haskell, sau đó Java có thể sử dụng thông qua JNA. Ngoài ra, bạn có thể thực hiện cùng một thư viện được chia sẻ này và viết một số mã keo để hiển thị nó thông qua JNI cho một giao diện "Java-y" hơn. Bạn cũng có thể đi hạt và tiếp xúc đủ của JNI thông qua FFI để Haskell để thực sự có được Java của bạn (Đây là phần nào cách tiếp cận của Lambada giấy mất).

Tôi tin rằng Haskell chia sẻ lib + JNA sẽ là phương pháp đơn giản nhất, dễ nhất. Đây là giả định rằng nó dễ dàng hơn để trưng ra một số hàm Haskell cho Java, hơn là để trưng ra một số đối tượng Java cho Haskell. Đối với một số cái nhìn sâu sắc trong đi theo hướng khác, bạn có thể quan tâm đến Salsa, là C#, không phải Java nhưng các nguyên tắc trong thiết kế giao diện có thể được quan tâm.

+2

Phần thực sự khó khăn là tự động hóa việc tạo ra các giao diện Haskell từ mã Java. Có tiến bộ nào không? –