Le nouveau langage JVM se distingue de Scala, Clojure

Un autre langage JVM, le dialecte Haskell Eta, est arrivé sur la scène, à nouveau centré sur la programmation fonctionnelle.

Destiné à la construction de systèmes évolutifs, Eta est un langage fonctionnel fortement typé. Il est similaire à Scala, un langage JVM qui met également l'accent sur la programmation fonctionnelle et l'évolutivité, et Clojure, un autre langage fonctionnel sur la JVM.

Mais Eta se distingue de ces concurrents car il est immuable par défaut, il utilise une évaluation paresseuse et il dispose d'un système de type très puissant, a déclaré le fondateur d'Eta, Rahul Muttineni, CTO chez TypeLead, qui supervise le langage. Cette combinaison permet des garanties statiques et une concision tout simplement impossible dans Scala ou Clojure.

Actuellement à la version 0.0.5 dans une version alpha, Eta est interopérable avec Java, permettant la réutilisation des bibliothèques Java dans les projets Eta et l'utilisation des modules Eta en Java. Une sécurité de type forte permet aux développeurs de fournir au compilateur plus d'informations sur le code, tandis que l'immuabilité dans Eta augmente la concurrence.

Eta présente également la pureté, dans laquelle l'appel d'une fonction avec les mêmes arguments donne les mêmes résultats à chaque fois; les définitions de fonctions sont traitées comme des équations et les substitutions peuvent être effectuées comme en mathématiques. Les partisans de l'Eta ont déclaré que cela facilite la compréhension du code et évite de nombreux bogues typiques des langages impératifs. «La pureté vous permet de traiter votre code comme des équations en mathématiques et facilite grandement le raisonnement sur votre code, en particulier dans les paramètres de concurrence et de parallélisme», a déclaré Muttineni.

Eta est «paresseux par défaut», ce qui signifie que les données restent dans un état non évalué jusqu'à ce qu'une fonction ait besoin de voir à l'intérieur. Cela permet aux développeurs de programmer sans avoir à se soucier de savoir s'ils ont effectué plus de calculs que nécessaire. Les développeurs peuvent également écrire des algorithmes à passes multiples en un seul passage. "La paresse vous permet de ne plus vous soucier de l'ordre dans lequel vous rédigez vos déclarations", a déclaré Muttineni. "Spécifiez simplement les dépendances de données en définissant des expressions et leurs relations entre elles, et le compilateur les exécutera dans le bon ordre et uniquement si les expressions sont nécessaires."

Les plans nécessitent de doter Eta d'un environnement d'exécution simultané, d'un REPL interactif, d'une métaprogrammation, d'un parallélisme massif et d'une concurrence transactionnelle. La prise en charge du gestionnaire de build Maven et d'une bibliothèque principale sont également en cours de développement, ainsi que la génération standard pour les importations d'interface de fonction étrangère Java.