Size: a a a

2020 June 22

SB

S B in ErlangRus
то есть, это какой-то способ заставить этот код работать с архаичными версиями Эрланга, но не общеупотребимое решение для какой-то типичной проблемы?
источник

V

Vasilii Demidenok in ErlangRus
namespaced_types это не общеупотребимая переменная, если ты об этом.
ifdef - условная компиляция. Может про неё почитать, если не знаком?
источник

SB

S B in ErlangRus
namespaced_types я про это. окей, спасибо. я думал, это что-то другое и дает какие-то другие преимущества, которые настолько очевидны, что на них даже документацию не написали. а ведь проект очень хорошо задокументирован.
источник

ИИ

Иванов Иванов... in ErlangRus
Михаил Малюк
это как бы реп хеберта. если не он, то кто?
я не знаю, поэтому и спрашиваю.
источник

V

Vasilii Demidenok in ErlangRus
S B
namespaced_types я про это. окей, спасибо. я думал, это что-то другое и дает какие-то другие преимущества, которые настолько очевидны, что на них даже документацию не написали. а ведь проект очень хорошо задокументирован.
{erl_opts, [
    {platform_define, "^[0-9]+", namespaced_types}
]}.

ответ на твой вопрос, из rebar.config-а
источник

VS

Vladimir Sekisov in ErlangRus
да, это был переход в спецификациях типа,
я уже не помню деталей,
приходилось городить такое.
источник

VS

Vladimir Sekisov in ErlangRus
вобщем, если не то ли 14, то ли 15 версия OTP,то можно забить.
источник

V

Vasilii Demidenok in ErlangRus
Кто-нибудь уже использует тулы для автоформатирования у себя в продакшене (erlang)? Если да - какие?
источник

ИИ

Иванов Иванов... in ErlangRus
Vasilii Demidenok
Кто-нибудь уже использует тулы для автоформатирования у себя в продакшене (erlang)? Если да - какие?
я заинтересовался было rebar format - но потом приуныл
источник

SB

S B in ErlangRus
Vasilii Demidenok
Кто-нибудь уже использует тулы для автоформатирования у себя в продакшене (erlang)? Если да - какие?
В имакс же встроен какой-то автоформаттер?
источник
2020 June 23

С

Саша in ErlangRus
S B
В имакс же встроен какой-то автоформаттер?
мне нравится такой пакет https://github.com/purcell/reformatter.el
источник

С

Саша in ErlangRus
тулзы консольные выполняются
источник

С

Саша in ErlangRus
не зависит от мода
источник

V

Vasilii Demidenok in ErlangRus
emacs-овый довольно слабый, интересует форматтер в стиле gofmt или haskell-ёвого.
источник

SP

Sergey Prokhorov in ErlangRus
S B
-ifdef(namespaced_types).
-record(buf, {type = undefined :: undefined | stack | queue | keep_old | {mod, module()},
             max = undefined :: undefined | max(),
             size = 0 :: non_neg_integer(),
             drop = 0 :: drop(),
             data = undefined :: undefined | queue:queue() | list()}).
-else.
-record(buf, {type = undefined :: undefined | stack | queue | keep_old | {mod, module()},
             max = undefined :: undefined | max(),
             size = 0 :: non_neg_integer(),
             drop = 0 :: drop(),
             data = undefined :: undefined | queue() | list()}).
-endif.
Это да, до какой-то версии типы queue() и dict() были глобальными, а после их перенесли в модули и добавили warning если записать без модуля. И этот ifdef это условная компиляция в зависимости от версии Erlang. Конкретно эта проблема уже не актуальна (вроде изменение внедрили после OTP16, который уже никто не поддерживает). Сейчас можно встретить подобные трюки на тему стектрейсов.
источник

D

Dim in ErlangRus
Спецификация типов это процесс так сказать развития языка.
Не помню когда он появился . Лет может 10 назад.
Суть его в том, что на язык , свободный от строгой типизации решили её всё-таки навесить и сделать его более похожим на С/С++.
Эту фичу можно использовать , можно и нет.
В зависимости от традиций кампании и рабочего окружения и исходя из личных предпочтений.
источник

D

Dim in ErlangRus
Случившаяся чехарда с queue() dict() типами приводит необходимости правки старых проектов.
Жесткое ограничение типа прописано а типа такого уже не существует.
Типа как без ходить в маске штраф а масок нигде нет.
Я как честная Маша по первости делал глобальную замену dict() или queue() на any.
Можно и да , ifdef это обвязывать. Только это чуть более хлопотно. А суть - таже же ядрёна матрена. И главное на работу уже написанного кода это никак не влияет.
Поэтому сейчас когда нужно оценить какойнибудь старый проект поступаю просто.
Комментю все жёсткие ограничения типов, чтоб проще было собирать при первом знакомстве с проектом.
Описание входных параметров в виде комментов все равно остаётся.
Если код рабочий это в начале знакомства с ним никак не влияет.
А если слабо рабочий то на знакомство с ним тратится меньше времени.
источник

DF

Dmitry Frolov in ErlangRus
Надо ставить запятые, бро
источник

DF

Dmitry Frolov in ErlangRus
Как минимум - читается лучше
источник

DF

Dmitry Frolov in ErlangRus
В чате точно есть коллега, который кошмарил ежа
источник