Janë disponuar versioni i parë alpha i gjuhës së programimit Gauntlet, një shtesë për gjuhën Go, e cila adreson disa probleme arkitekturore dhe shton funksionalitete të reja. Programet në gjuhën Gauntlet mbështesin të gjitha mundësitë e gjuhës Go, përkthehen në një përfaqësim në gjuhën Go dhe integrohen me ekosistemin ekzistues të Go pa pasur nevojë për ndonjë lidhje (binding). Projekti i zhvilluar është shkruar në F# dhe shpërndahet nën licencën GPLv3. Një shtesë për redaktorin VSCode është e disponueshme për punën me kodin.
Problemet e zgjidhura në Gauntlet:
- Dalja e bezdisshme e gabimeve të lidhura me variablat e pa përdorur (Gauntlet shton për të gjithë variablat e pa përdorur zëvendësues si '_ = a').
- Kodi i fryrë për trajtimin e gabimeve. Në Gauntlet, në vend të blloqeve kushtore si 'if err != nil' përdoren shprehje një-rresht 'try-with'.
- Mënyra e bezdisshme për importimin dhe eksportimin (p.sh., në Go kërkohet që emrat e eksportuar të fillojnë me shkronjë të madhe).
- Mungesa e operatorit ternar. Në Gauntlet mund të përdoren shprehje si ‘let properWord = @String len(lines) > 1 ? «lines» : «line»‘.
- Mungesa e sintaksës switch-case.
- Ciklet e komplikuara «for». Në Gauntlet mund të shkruani «for let _, c in «Hello» {» në vend «for _, c := range «Hello» {«.
- Operatori i çuditshëm i caktimit («:=» për shpalljen dhe inicializimin e së njëjtësherit; «=» për ndryshimin e vlerës së variablave të shpallura tashmë).
- Pamundësia për të thirur funksione në zinxhir (në Gauntlet përkrah thirjen si ‘let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, «\n»)’.)
Mundësitë e avancuara të Gauntlet:
- Sintaksa «when-is» e ngjashme me switch.case, por që manipolon shprehjet.
- Përkrahja e kanaleve të pipe, që lejojnë kalimin e vlerës nëpër disa shprehje ose funksione, për shembull «10 => add(_, 10) => add(_, 30) => divide(_, 2)».
- Shprehjet «try .. with» dhe «force .. with».
- Shprehja «wrapper» për krijimin e aleatëve të tipave (për shembull «wrapper Int Dollars»).
Burimi: opennet.ru
