Saadaval on esimene alfa-versioon programmeerimise keelest Gauntlet, mis on kiht Go keele kohal, lahendades teatud arhitektuurilised probleemid ja lisades täiendavaid funktsioone. Gauntlet'i keel toetab kõiki Go keele võimalusi, tõlgitakse Go keele vormi ning integreeritakse olemasoleva Go ökosüsteemiga ilma, et oleks vaja kasutada sidemeid (binding). Projekti tööriistakomplekt on kirjutatud F# keeles ja levitatakse GPLv3 litsentsi alusel. Koodi töötlemiseks on saadaval VSCode toimetaja lisa.
Gauntlet'is lahendatavad probleemid:
- Ebameeldivad veateated, mis on seotud kasutamata muutujatega (Gauntlet lisab kõigile kasutamata muutujaile placeholder'id nagu "_ = a").
- Kohmakas kood veateadete käsitlemiseks. Gauntlet'is kasutatakse tingimuste blokkide "if err != nil" asemel ühekordseid väljendeid "try-with".
- Ebamugav importimise ja eksportimise viis (näiteks Go-s peavad eksportitavad nimed algama suure algustähega).
- Tenaroperaatori puudumine. Gauntletis saab kasutada väljendeid nagu ‘let properWord = @String len(lines) > 1 ? «lines» : «line»‘.
- Switch-case süntaks puudub.
- Täpsemad «for» tsüklid. Gauntletis saab kirjutada «for let _, c in «Hello» {» selle asemel, et kasutada «for _, c := range «Hello» {«.
- Ebatavaline määramisoperaator («:=» muutujate samaaegseks deklareerimiseks ja initsialiseerimiseks; «=» juba deklareeritud muutujate väärtuse muutmiseks).
- Funtsioonide ahelkutsumise võimaluse puudumine (Gauntlet toetab kutsevormi ‘let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, «\n»)‘).
Gauntleti laiendatud võimalused:
- «when-is» süntaks sarnaneb switch-case'iga, kuid manipuleerib väljenditega.
- Torude kanalite tugi, mis võimaldab väärtuse ahelal läbida mitme väljendi või funktsiooni. Näiteks «10 => add(_, 10) => add(_, 30) => divide(_, 2)».
- Väljendid «try .. with» ja «force .. with».
- «wrapper» väljend tüüpide hüüdnimede loomiseks (nt «wrapper Int Dollars»).
Allikas: opennet.ru
