Bahasa JVM baru berdiri terpisah dari Scala, Clojure

Bahasa JVM lainnya, dialek Haskell Eta, telah muncul, sekali lagi berpusat pada pemrograman fungsional.

Ditujukan untuk membangun sistem yang dapat diskalakan, Eta adalah bahasa fungsional yang diketik dengan kuat. Ini mirip dengan Scala, bahasa JVM yang juga menekankan pemrograman fungsional dan skalabilitas, dan Clojure, bahasa fungsional lain di JVM.

Tetapi Eta membedakan dirinya dari pesaing tersebut karena tidak dapat diubah secara default, menggunakan evaluasi malas, dan memiliki sistem tipe yang sangat kuat, kata pendiri Eta Rahul Muttineni, CTO di TypeLead, yang mengawasi bahasa tersebut. Kombinasi ini memungkinkan jaminan statis dan keringkasan yang tidak mungkin dilakukan di Scala atau Clojure.

Saat ini pada versi 0.0.5 dalam rilis alfa, Eta dapat dioperasikan dengan Java, memungkinkan penggunaan kembali pustaka Java dalam proyek Eta dan penggunaan modul Eta di Java. Keamanan tipe yang kuat memungkinkan pengembang memberi tahu compiler lebih banyak informasi tentang kode, sementara kekekalan di Eta meningkatkan konkurensi.

Eta juga menonjolkan kemurnian, di mana memanggil fungsi dengan argumen yang sama menghasilkan hasil yang sama setiap saat; definisi fungsi diperlakukan sebagai persamaan dan substitusi dapat dilakukan seperti dalam matematika. Pendukung ETA mengatakan ini membuatnya lebih mudah untuk memahami kode dan mencegah banyak bug yang khas dalam bahasa imperatif. "Kemurnian memungkinkan Anda untuk memperlakukan kode Anda seperti persamaan dalam matematika dan membuatnya lebih mudah untuk bernalar tentang kode Anda, terutama dalam pengaturan konkurensi dan paralelisme," kata Muttineni.

Eta adalah "malas secara default", yang berarti data tetap dalam keadaan tidak dievaluasi sampai fungsi perlu melihat ke dalamnya. Ini memungkinkan pengembang memprogram tanpa harus khawatir tentang apakah mereka telah melakukan lebih banyak komputasi daripada yang diperlukan. Pengembang juga dapat menulis algoritme multipass dalam sekali jalan. "Kemalasan memungkinkan Anda untuk berhenti mencemaskan urutan penulisan pernyataan Anda," kata Muttineni. "Cukup tentukan dependensi data dengan mendefinisikan ekspresi dan hubungannya satu sama lain, dan compiler akan mengeksekusinya dalam urutan yang benar dan hanya jika ekspresi tersebut diperlukan."

Rencana panggilan untuk menyesuaikan Eta dengan runtime bersamaan, REPL interaktif, metaprogramming, paralelisme masif, dan konkurensi transaksional. Dukungan untuk build manager Maven dan pustaka inti juga sedang dikembangkan, bersama dengan pembuatan boilerplate untuk impor Java Foreign Function Interface.