Size: a a a

2020 May 22

AR

Andrew Rudenko in pro.elixir
Lama Lover
Если эти элементы - это куски ast
То я бы привёл их к виду {functuon_name_atom, args_list}
не, это ж уже сильно после ast
источник

LL

Lama Lover in pro.elixir
Взглянул. В AST лежит лисп
уф
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
Взглянул. В AST лежит лисп
уф
m-expr на самом деле, но с репрезентацией на списках
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
не, это ж уже сильно после ast
Мой совет - постарайся избавиться от разноразмерных туплов и тогда матчить станет заметно легче
источник

PG

Pig Greenest in pro.elixir
учти только, что nimble_parsec генерирует функции, которые матчат бинари, вполне можно написать адовую грамматику, которая скомпилируется не очень хорошо
источник

PG

Pig Greenest in pro.elixir
их и так несложно матчить, просто не очень красиво
источник

AB

Alex Bubnov in pro.elixir
Pig Greenest
учти только, что nimble_parsec генерирует функции, которые матчат бинари, вполне можно написать адовую грамматику, которая скомпилируется не очень хорошо
В смысле, это какое-то подобие парсер-комбинаторов, напрочь прибитое к бинарям?
источник

AB

Alex Bubnov in pro.elixir
Если так, то это хорошая, смешная шутка
источник

PG

Pig Greenest in pro.elixir
Это и есть комбинаторы, только немного специфичные
источник

PG

Pig Greenest in pro.elixir
Бинари там на входе, на выходе что напишешь
источник
2020 May 23

AR

Andrew Rudenko in pro.elixir
привет! а нельзя тайпспеки получить в каком-то виде в рантайме и провалидировать их?
источник

NB

Nikita Babushkin in pro.elixir
Привет
Code.Typespec.fetch_specs(Module)

что такое провалидировать в райнайме - хз
источник

AR

Andrew Rudenko in pro.elixir
validate(spec, value) -> true | false
источник

AR

Andrew Rudenko in pro.elixir
Nikita Babushkin
Привет
Code.Typespec.fetch_specs(Module)

что такое провалидировать в райнайме - хз
ну вот есть генератор валидаторов из этого представления спеков?
источник

AR

Andrew Rudenko in pro.elixir
я пока нашел эксперимент по генерации генераторов (ой) для пропчека из тайпсеков https://github.com/evnu/propcheck_derive (обсуждение тут https://github.com/alfert/propcheck/pull/128)
источник

NB

Nikita Babushkin in pro.elixir
А какую задачу ты пытаешься решить?
Имхо, сложные бизнес-ентити все равно околоневозможно описать эрланговыми спеками, а для строгости инпута простых типов есть guards.
источник

AR

Andrew Rudenko in pro.elixir
я хочу имея на руках спеку убедиться, что функция ДЕЙСТВИТЕЛЬНО возвращает описаное в спеке
источник

AR

Andrew Rudenko in pro.elixir
статичная проверка через dialyzer далеко не всегда способна это проверить / опровергнуть и это ок
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Andrew Rudenko
я хочу имея на руках спеку убедиться, что функция ДЕЙСТВИТЕЛЬНО возвращает описаное в спеке
А как это можно сделать? Ты получается должен запустить функцию на всей области определения и потом проверить всю ее область значений
источник

NB

Nikita Babushkin in pro.elixir
Он, как я понял, хочет крашить рантайм если функция нарушает свою спеку
источник