È stato presentato il linguaggio di programmazione Gauntlet, che amplia le capacità del linguaggio Go

È disponibile la prima versione alpha del linguaggio di programmazione Gauntlet, un'estensione del linguaggio Go, che risolve alcuni problemi architetturali e aggiunge funzionalità extra. I programmi scritti in Gauntlet supportano tutte le funzionalità del linguaggio Go, sono convertiti in un rappresentazione nel linguaggio Go e si integrano con l'ecosistema esistente di Go senza necessità di utilizzo di binding. Gli strumenti sviluppati dal progetto sono scritti in F# e sono distribuiti sotto licenza GPLv3. È fornito un plugin per lavorare con il codice all'interno di VSCode.

Problemi risolti da Gauntlet:

  • Errori fastidiosi legati a variabili non utilizzate (Gauntlet aggiunge una sostituzione del tipo “_ = a” per tutte le variabili non utilizzate).
  • Codice ingombrante per la gestione degli errori. In Gauntlet, invece di usare blocchi condizionali come “if err != nil”, vengono utilizzate espressioni in una sola riga “try-with”.
  • Un modo fastidioso di importare ed esportare (ad esempio, in Go è necessario che i nomi esportati inizino con una lettera maiuscola).
  • Mancanza di un operatore ternario. In Gauntlet si possono utilizzare espressioni del tipo ‘let properWord = @String len(lines) > 1 ? “lines” : “line”‘.
  • Assenza della sintassi switch-case.
  • Cicli «for» complessi. In Gauntlet puoi scrivere «for let _, c in «Hello» {» invece di «for _, c := range «Hello» {«.
  • Operatore di assegnazione insolito («:=» per la dichiarazione e l'inizializzazione simultanee delle variabili; «=» per modificare il valore delle variabili già dichiarate).
  • Impossibilità di chiamare funzioni in chaining (in Gauntlet è supportata la chiamata del tipo ‘let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, «\n»)’.

Funzionalità avanzate di Gauntlet:

  • La sintassi «when-is» è simile a switch.case, ma manipola le espressioni.
  • Supporto per i pipe channel, che consentono di passare un valore attraverso più espressioni o funzioni in una catena, ad esempio «10 => add(_, 10) => add(_, 30) => divide(_, 2)».
  • Espressioni «try .. with» e «force .. with».
  • Espressione «wrapper» per creare alias di tipo (ad esempio, «wrapper Int Dollars»).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster