Size: a a a

2021 November 09

ML

Maksim Lapshin in ErlangRus
не, ну использование fun вообще плохая штука
источник

ML

Maksim Lapshin in ErlangRus
но мне кажется, что главная боль всего этого — неготовность рестартить по несколько раз в день ноды
источник

X

XÆA-XII in ErlangRus
чёт посмотрел и понял, что ничего интересного
источник

X

XÆA-XII in ErlangRus
ну или меня просто уже от типов тошнит
источник

ML

Maksim Lapshin in ErlangRus
я вот не стал постить наш новогодний позор, когда из-за выгорания одной линии питания, мы здорово подпортили жизнь клиентам в новый год
источник

SP

Sergey Prokhorov in ErlangRus
ну на постгрес переедем - тогда возможно начнём рестартовать. Сейчас, пока часть таблиц всё ещё in-memory mnesia (большинство мигрировали в leveldb), старт ноды занимает пару десятков минут пока таблицы восстанавливаются
источник

ИИ

Иванов Иванов... in ErlangRus
там типизация чтоль? понятно
источник

X

XÆA-XII in ErlangRus
Да, типы и синтаксис хаскельный
источник

AB

Alex Bubnov in ErlangRus
это такой хаскель
источник

ML

Maksim Lapshin in ErlangRus
а вам тот же тарантул не?
источник

SP

Sergey Prokhorov in ErlangRus
думаю его даже не рассматривали. Никто не знает что это и как его готовить (я в том числе)
источник

MK

Matwey Kornilov in ErlangRus
Видео-наблюдение выключилось, а когда включилось, то у клиентов всё уже спёрли?
источник

SP

Sergey Prokhorov in ErlangRus
если я правильно понял как этот алгоритм работает (выбор переменных, которые нужно захватить из контекста):
* Находятся все переменные, которые используются в теле fun -> Bu
* Находятся все переменные, которые дефайнятся в аргументах fun Ns
* из первого вычитается второе subtract(Bu, Ns) - это и будут переменные, которые нужно захватить из окружения.

т.е. для

mk_fun(A) ->
 B = rand:uniform(),
 fun(C) -> {A, B, C} end.

будет Bu = [A, B, C], Ns = [C] и соответственно Bu - Ns = [A, B, C] - [C] = [A, B]
источник

SP

Sergey Prokhorov in ErlangRus
ну и захватываются они да, целиком
источник
2021 November 10

AB

Alex Bubnov in ErlangRus
Я сильно не вчитывался, но выглядит так, будто компилятор вообще не пытается что-то сделать с этим подвыражением(X#y.z), и в принципе понятно почему - это не настолько простой рерайт, насколько мне показалось раньше. Там же ещё совпадение рекорда проверяется, и эксепшен кидается. Рерайт должен перенести эту проверку во внешнюю функцию, и я могу представить себе код, который после появления такого рерайта сломается.
источник

A ß in ErlangRus
мораль -- матчите рекорды, а не используйте аксессоры (в лямбдах)
источник

ML

Maksim Lapshin in ErlangRus
аа, там аксессоры были?
источник

A ß in ErlangRus
насколько я понял да
источник

SP

Sergey Prokhorov in ErlangRus
Ну в brod просто к полю рекорда обращались через State#state.my_field
источник

SP

Sergey Prokhorov in ErlangRus
И т.к. во внещней функции в заголовке #state{} = State уже матчился, то в принципе оптимизация должна быть возможна. Но явно не такая тривиальная
источник