Nytt JVM-språk skiljer sig från Scala, Clojure

Ett annat JVM-språk, Haskell-dialekt Eta, har anlänt till scenen och återigen centrerat om funktionell programmering.

Avsett för att bygga skalbara system är Eta ett starkt skrivet funktionellt språk. Det liknar Scala, ett JVM-språk som också betonar funktionell programmering och skalbarhet, och Clojure, ett annat ett funktionellt språk på JVM.

Men Eta skiljer sig från sådana konkurrenter eftersom det är oföränderligt som standard, det använder lat utvärdering och det har ett mycket kraftfullt typsystem, säger Eta-grundaren Rahul Muttineni, CTO på TypeLead, som övervakar språket. Denna kombination möjliggör statiska garantier och korthet helt enkelt inte i Scala eller Clojure.

För närvarande på version 0.0.5 i en alfa-release är Eta interoperabel med Java, vilket möjliggör återanvändning av Java-bibliotek i Eta-projekt och användning av Eta-moduler i Java. Stark typsäkerhet gör det möjligt för utvecklare att berätta kompilatorn mer information om kod, medan oföränderlighet i Eta ökar samtidigheten.

Eta har också renhet, där anrop till en funktion med samma argument ger samma resultat varje gång; funktionsdefinitioner behandlas som ekvationer och substitutioner kan utföras som i matematik. Eta-förespråkare sa att detta gör det lättare att förstå kod och förhindrar många buggar som är typiska för tvingande språk. "Renhet gör att du kan behandla din kod som ekvationer i matematik och gör det mycket lättare att resonera om din kod, särskilt i inställningar för samtidighet och parallellism," sa Muttineni.

Eta är "lat som standard", vilket betyder att data förblir i ett ovärderat tillstånd tills en funktion behöver se inuti. Detta låter utvecklare programmera utan att behöva oroa sig för om de har gjort mer beräkning än vad som krävdes. Utvecklare kan också skriva multipassalgoritmer i ett enda pass. "Lata gör att du kan sluta oroa dig för i vilken ordning du skriver dina uttalanden", sade Muttineni. "Ange bara databeroenden genom att definiera uttryck och deras förhållande till varandra, så kommer kompilatorn att utföra dem i rätt ordning och endast om uttrycken behövs."

Planer kräver att Eta passar en samtidig körtid, en interaktiv REPL, metaprogrammering, massiv parallellitet och transaktionssamverkan. Stöd för Maven build manager och ett kärnbibliotek utvecklas också, tillsammans med pannplattegenerering för import av Java Foreign Function Interface.