2012-06-22 27 views
5

Tôi là một người mới bắt đầu Scala và đến từ Object Oriented Paradigm. Trong khi hiểu được phần lập trình chức năng của Scala, tôi được chuyển hướng tới Haskell - ngôn ngữ lập trình hàm thuần túy.haskell scala khả năng tương tác

Khám phá câu hỏi SO câu trả lời, tôi thấy rằng Java - Haskell có khả năng tương tác.

Tôi tò mò muốn biết rằng khả năng tương tác của Scala-Haskell có tồn tại tương tự hay không?

Thư viện chức năng được viết bằng Haskell có được sử dụng trong ứng dụng Scala không?

Theo câu trả lời của Don Stewart: Có thể.

Tích hợp Thư viện hàm Haskell trong ứng dụng Scala sẽ thẳng và dễ dàng hoặc yêu cầu chỉnh sửa phức tạp?

Với Thư viện chức năng Haskell tích hợp, ứng dụng Scala sẽ chạy trên JVM hoặc sẽ yêu cầu sắp xếp khác nhau?

+1

Nếu có Java-Haskell interop, thì việc sử dụng Scala trong Haskell sẽ không khác gì khi sử dụng Java. Scala biên dịch sang các lớp Java thông thường, mặc dù có thêm một số hỗ trợ thời gian chạy từ Scala "nội trang". – Ashe

Trả lời

4

Tôi thấy rằng Java - Haskell có khả năng tương tác. Tôi tò mò muốn biết rằng tương tự như Scala-Haskell khả năng tương tác tồn tại hay không?

Cũng cho rằng khả năng tương tác là transitive và cho rằng (hj_interop : Haskell <-> Java)(js_interop : Java <-> Scala), do đó chúng tôi kết luận rằng Haskell <-> Scala.

Nếu bạn muốn Haskell -> Scala, thì chỉ cần Haskell -> Java từ hj_interopJava -> Scala từ js_interop. Nếu bạn muốn Scala -> Haskell, thì chỉ cần Scala -> Java từ js_interopJava -> Haskell từ hj_interop.

Đây không phải là giải thích rất hữu ích về cách hoàn thành khả năng tương tác Haskell - Scala, nhưng với khả năng tương tác hiện có, bạn chỉ cần soạn chúng theo cách hiển nhiên. Scala không cung cấp bất kỳ khả năng tương tác trực tiếp, thuận tiện nào với Haskell mà tôi biết, ngoài việc cung cấp scalaz để thêm cảm giác Haskell-y vào Scala. Haskell không cung cấp bất kỳ khả năng tương tác trực tiếp, thuận tiện nào với Scala mà tôi biết.

+0

Điều gì có thể là vấn đề hiệu suất, nếu Scala -> Haskell đạt được bằng cách sử dụng Scala -> Java từ js_interop, và Java -> Haskell từ hs_interop. Ở đây, mục đích chính là để có được lợi ích của sức mạnh lập trình Functionall nặng của haskell. – Optimight

+0

scala <-> java interop có hiệu quả bằng không. Tất cả những gì đã nói, nếu bạn muốn viết mã giống như Haskell trong scala, chỉ cần cài đặt scalaz và viết nhiều chữ ký kiểu hơn. :) –

+0

Bạn có thể quan tâm đến dự án Frege (http://code.google.com/p/frege /), đặt một ngôn ngữ giống như Haskell trên JVM. Tôi thừa nhận khả năng tương tác Java vẫn còn chỗ để cải tiến, nhưng được xây dựng và trình biên dịch phát ra các tệp * nguồn * rất vui nhộn *. – Landei

4

Có thể, nhưng tôi không biết bất kỳ ví dụ nào.

+4

Sẽ phức tạp nếu bạn thử và liên kết các mạch JVM và GHC với nhau. Sẽ dễ dàng nếu bạn giao tiếp thông qua một giao thức, ví dụ: JSON. –

+0

Ý tôi là ... theo một số cách, tôi gần như muốn hỏi liệu nó có dễ dàng hơn để biên dịch C-- và tương tự như Java bytecode, mặc dù việc liên kết RTS trở lại sẽ làm cho mọi thứ ... thú vị. –

Các vấn đề liên quan