Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

Представлен язык программирования Gauntlet, расширяющий возможности языка Go

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 388
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 39 раз
Поблагодарили: 22 раза

Представлен язык программирования Gauntlet, расширяющий возможности языка Go

Сообщение root:# »

Представлен язык программирования Gauntlet, расширяющий возможности языка Go
Доступен первый альфа-выпуск языка программирования 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").

Источник: https://www.opennet.ru/opennews/art.shtml?num=63348