Size: a a a

2021 November 26

DF

Denis Fakhrtdinov in ErlangRus
А если опустить _?
источник

DF

Denis Fakhrtdinov in ErlangRus
В смысле, поматчиться на все ин-ты в четверке.
источник

DF

Denis Fakhrtdinov in ErlangRus
Шелла под рукой нет.
источник

DF

Denis Fakhrtdinov in ErlangRus
У меня пока единственное предположение в том, что вм не может вычислить размерность паттерна и потому фейлится.
источник

DZ

Danil Zagoskin in ErlangRus
выше пример без них
источник

DZ

Danil Zagoskin in ErlangRus
дело, видимо, не в этом:

> [X || <<X:4/binary>> = <<Y:4/binary>> <= <<"abcdabefabqtabmn">>].
* 1:39: syntax error before: '<='
источник

DF

Denis Fakhrtdinov in ErlangRus
А, я, наконец, понял что ты хочешь получить.
источник

DZ

Danil Zagoskin in ErlangRus
похоже, что при использовании бинарного генератора <= совсем запрещено использовать =
Документацию по этому синтаксису я быстро найти не смог.
Возможно, это добавлено в минимальном виде, а потом перешло в разряд «так сложилось»
источник

DF

Denis Fakhrtdinov in ErlangRus
Да, оно гораздо позже bit syntax вливалось.
источник

VS

Viacheslav Shevchenk... in ErlangRus
Не очень красиво но можно так обойтись
`49> [<<"a", B/utf8, "c", D/utf8>> || <<"a", B/utf8, "c", D/utf8>> <= <<"abcdabefabqtabmnafcf">>].
[<<"abcd">>,<<"afcf">>]`
источник

DZ

Danil Zagoskin in ErlangRus
да, про это я знаю, но в случае с реальным протоколом это превращается в дичь
источник

DF

Denis Fakhrtdinov in ErlangRus
В случае с реальным протоколом любой binary comprehension превратится в дичь, имхо. Я бы писал функцией.
Пока ума не приложу как это написать так, чтобы bincomp имел смысл из-за компактности. Всё что получается превращает код в кашу.
источник

A ß in ErlangRus
кажется паттерн слева от <= должен быть заключен в << >>
источник

DZ

Danil Zagoskin in ErlangRus
вынести фильтр или геттер в отдельную функцию — компактно и понятно:

[X || <<X:4>> <= Bin, chars13(X) == “ac”]

В боевом коде это норм, но в скриптах и тестах на каждый чих городить хелпер тяжело
источник

A ß in ErlangRus
потому что [X || X <= <<...>>] это невалидное выражение, а [X || <<X>> <= <<...>>] уже валидное
источник

LL

Lama Lover in ErlangRus
Много
источник

DF

Denis Fakhrtdinov in ErlangRus
Я, скорей, про функцию вида parse(X) -> [protocol_unit()].
источник

DF

Denis Fakhrtdinov in ErlangRus
Её и тестировать проще, и реюзать.
источник

DF

Denis Fakhrtdinov in ErlangRus
Да и код понятней будет.
источник

DZ

Danil Zagoskin in ErlangRus
в боевом коде это уже parse(In, State) -> {Out, State1}, внутри там масса оптимизаций по перфомансу и прочему.
В тестах — задача одной строкой вырезать пакет из тыщи и проверить, что в нём всё ок
источник