LINUX.ORG.RU

dhall-lang v11.0.0

 , ,


0

1

Dhall – это программируемый язык конфигурации, который можно описать как JSON + функции + типы + импорт.

Изменения:

  • Упрощена запись выражений, где используется .
  • Упрощена запись выражений с вложениями,
  • Добавлена поддержка ведущих разделителей.
  • Стандартизирована поддержка обозначения завершенности записи.
  • Улучшена поддержка кеширования в Windows.
  • Добавлены типы в файлы package.dhall.
  • Добавлены утилиты: List.{default,empty}, Map.empty, Optional.default.
  • JSON.key {Text, Value} перемещен на Map.

>>> Подробности

anonymous

Проверено: cetjs2 ()

Ответ на: комментарий от dimgel

читать с ответами

Один пацан сериализовал все в бинарные данные, а потом забыл номер версии поменять, неправильно распарсилось и умер.

У меня так друг погиб

Кто сказал «Метапрог»?

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Ты сможешь гарантировать, что произвольный конфиг для твоего приложения, написанный на lua, никогда не выкинет ошибку или не повесит систему?

Исключение всегда можно перехватить, а если повесит систему, то в следующий раз юзер будет умнее

annulen ★★★★★ ()
Ответ на: комментарий от pihter

Lua не декларативный, да и с типизацией (как и в JSON) там проблемы.

Считаю dhall оверкиллом для обычных конфигов, но было бы интересно писать на нем, затем транспилируя в более простые языки. Dhall будет гарантировать корректность, простоту внесения изменений, а результат будет дешевле парсить.

Siborgium ()

Если хочется какой-нибудь язык для конфигурации, но не совсем уж тупой - можно взять lua

Что люди не придумают, лишь бы XML не пользоваться.

Ну хз.

Как по мне JSON мастхев, но только как документ, без

+ функции + типы + импорт

Идеально для межпроцессного общения (сообщение одинаково хорошо читаемо и машиной и человеком)

А вот xml ну вообще ни куда не годится кроме как для машинной интерпретации.

Для именно конфигурации и вообще структурированного описания чего-то по моему имхо самое лучшее это yaml.

bonta ★★ ()
Ответ на: комментарий от bonta

xml ну вообще ни куда не годится

Он книги писать.

самое лучшее это yaml

А этот – данные. Некоторым этого достаточно.

Subj же – для дописавшихся до 10го правила. Но синтаксис оставляет желать.

DonkeyHot ★★★★★ ()
Ответ на: комментарий от DonkeyHot

Он книги писать.

Ну я и имел ввиду что на нём можно описать что-то типа документа для интерпретации машиной, не уверен, но помоему .odt файл это архив с кучей xml-подобных файликов внутри.

А человеку глаза замылятся со сложным xml работать

bonta ★★ ()
Ответ на: комментарий от dimgel

По ссылке какие-то нубы знающие о xml по наслышке.

Вот в комитете ISO сидят знающите люди.

    <gmd:date>
        <gmd:CI_Date>
            <gmd:date>
                <gco:DateTime>2019-04-15T15:28:16Z</gco:DateTime>
            </gmd:date>
            <gmd:dateType>
                <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"
                                             codeListValue="revision">revision</gmd:CI_DateTypeCode>
            </gmd:dateType>
        </gmd:CI_Date>
    </gmd:date>
    <gmd:date>
        <gmd:CI_Date>
            <gmd:date>
                <gco:DateTime>2017-06-21T00:00:00Z</gco:DateTime>
            </gmd:date>
            <gmd:dateType>
                <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"
                                             codeListValue="creation">creation</gmd:CI_DateTypeCode>
            </gmd:dateType>
        </gmd:CI_Date>
    </gmd:date>
WatchCat ★★★★★ ()
Последнее исправление: WatchCat (всего исправлений: 1)

Упрощена запись выражений, где используется ⫽.

У меня отображается ЧОРНЫЙ квадратик, только надписи censored не хватает. Я бы посоветовал автору все ключевые слова записывать иероглифом а спец символы брать исключительно из шумерского. Наглядность и упрощение написания, очевидно же.

A-234 ★★★★★ ()
Ответ на: комментарий от WatchCat

Понял: надо ещё к каждому элементу присобачить пару-тройку-пятёрку таких же вложенных, с одинаковыми и разными именами, а также namespace и внешние ссылки. Ну, со вложенностью «нубы по ссылке» и так вроде неплохо утрясли (хоть и не сразу, но коллективный разум таки-победил), так что до идеала осталось два пункта.

dimgel ★★ ()
Ответ на: комментарий от anonymous

+1. Хотя при желании довольно просто зафигачить собственный парсер, чтобы и кавычек вокруг имён полей не требовал, и в каменты умел, и не требовал русские буквы юникодить, и дополнительные типы поддерживал (особенно если парсится в типизированную структуру, типы полей которой видны через рефлексию), т.д. Только это уже будет не убого-уродский JSON, а нечто совсем другое «по мотивам».

dimgel ★★ ()
Ответ на: комментарий от Deleted

Общепринятый «норм язык, предназначенный для этих целей» — это ini-файлы. А что до костылей, то описанный мною парсер уложится на вскидку строк в 300 (на жаве). Это настолько ерунда, что даже начинать что-то там говорить про «норм язык» для этих целей — неприлично. Написать быстрее, чем с каким-то там «норм языком» разбираться; и надёжнее, кстати: т.к. цена этому «нормальному языку» — ноль без палочки, он может в любой момент подохнуть от тоски из-за собственной никому-ненужности.

dimgel ★★ ()
Ответ на: комментарий от dimgel

Ага, а потом расхлебывай за любителями написать велосипед в 300 строк на яве. А поддерживать их кто будет, Пушкин? И там не 300 строк, если подходить к задаче нормально.

З.Ы. ini-файлы оставьте себе.

Deleted ()
Ответ на: комментарий от Deleted

Ага, а потом расхлебывай за любителями написать велосипед в 300 строк на яве. А поддерживать их кто будет, Пушкин?

(пожимает плечами, и с интонацией, с которой красящий забор царь произносил «Тунеядец») Ламер...

В проектах на миллионы строк, это будет конечно самая сложная в поддержке вещь, кардинально усложняющая проект. Гораздо больше, чем чужое прилинкованное огроменное говно.

И там не 300 строк, если подходить к задаче нормально.

«Нормально» — это нафигачить огромного «универсального» монстра с кучей фичей, нафиг не нужных в конкретном проекте?

dimgel ★★ ()