Доступен первый альфа-выпуск языка программирования Gauntlet, надстройки над языком Go, решающей некоторые архитектурные проблемы и добавляющей дополнительную функциональность. Программы на языке Gauntlet поддерживают все возможности языка Go, транслируются в представление на языке Go и интегрируются с существующей экосистемой Go без необходимости задействования обвязок (binding). Развиваемый проектом инструментарий написан на языке F# и распространяется пол лицензией GPLv3. Для работы с кодом предоставляется дополнение к редактору VSCode.
Решаемые в Gauntlet проблемы:
- Назойливый вывод ошибок, связанных с неиспользуемыми переменными (Gauntlet добавляет для всех неиспользуемых переменных заглушки вида «_ = a»).
- Раздутый код для обработки ошибок. В Gauntlet вместо условных блоков вида «if err != nil» используются однострочные выражения «try-with».
- Назойливый способ импорта и экспорта (например, в Go необходимо, чтобы экспортируемые имена начинались на заглавную букву).
- Отсутствие тенарного оператора. В Gauntlet можно использовать выражения вида ‘let properWord = @String len(lines) > 1 ? «lines» : «line»‘.
- Отсутствие синтаксиса switch-case.
- Усложнённые циклы «for». В Gauntlet можно писать
«for let _, c in «Hello» {» вместо «for _, c := range «Hello» {«. - Необычный оператор присваивания («:=» для одновременного объявления и инициализации переменных; «=» для изменения значения уже объявленных переменных).
- Невозможность вызова функций по цепочке (в Gauntlet поддерживается вызов вида ‘let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, «n»)’.
Расширенные возможности Gauntlet:
- Синтаксис «when-is» похожий на switch.case, но манипулирующий выражениями.
- Поддержка pipe-каналов, позволяющих по цепочке пропускать значение через несколько выражений или функций. например «10 => add(_, 10) => add(_, 30) => divide(_, 2)».
- Выражения «try .. with» и «force .. with«.
- Выражение «wrapper» для создания псевдонимов типов (например. «wrapper Int Dollars»).
Источник: http://www.opennet.ru/opennews/art.shtml?num=63348