Size: a a a

2020 March 11

a

arikai in ErlangRus
Alex Bubnov
По абсурдной причине "слишком просто выстрелить себе в ногу"
С каких пор эта причина - абсурдна?
источник

AB

Alex Bubnov in ErlangRus
arikai
С каких пор эта причина - абсурдна?
с тех давних, когда осуждались "worse is better" и дебилизация отрасли.
источник

AB

Alex Bubnov in ErlangRus
Dmitry Russ (Aleksandrov)
Разве? Я думал, что это скорее идеологическое, что протоколы только для struct-ов - чтобы в Elixir-е был только один тип с именными полями.
We have also used records for doing the protocols dispatch but it had a big limitation. For example, every time you called any protocol, whenever we saw a tuple where the first element was an atom, like {Student, "josé", "valim"}, we would try to invoke the Student implementation for that protocol. The issue with this approach is that tuples where the first element is an atom are very, very, very common, so we ended-up trying to call protocol implementations for a bunch of different tuples only to find out there was no implementation, that it was a false positive, and it made the whole thing slow. With structs, because the struct tag is in __struct__, it is very unlikely to have conflicts.

ладно, я не совсем правильно прочел - тут false positives в другом смысле употребляется.
источник

DR

Dmitry Russ (Aleksandrov) in ErlangRus
Alex Bubnov
We have also used records for doing the protocols dispatch but it had a big limitation. For example, every time you called any protocol, whenever we saw a tuple where the first element was an atom, like {Student, "josé", "valim"}, we would try to invoke the Student implementation for that protocol. The issue with this approach is that tuples where the first element is an atom are very, very, very common, so we ended-up trying to call protocol implementations for a bunch of different tuples only to find out there was no implementation, that it was a false positive, and it made the whole thing slow. With structs, because the struct tag is in __struct__, it is very unlikely to have conflicts.

ладно, я не совсем правильно прочел - тут false positives в другом смысле употребляется.
Да, эту причину помню - но это скорее к тому, что выбрать как основную структуру с имеными полями. Record или Struct.
источник

AB

Alex Bubnov in ErlangRus
ну то есть, я до сих пор не понимаю, почему диспатч по ключу __struct__ в protocol dispatch module - нормально, а посмотреть на elem(1) + tuple_size() в нем же - нельзя
источник

a

arikai in ErlangRus
Ты сам скинул выше причину
источник

a

arikai in ErlangRus
Закинуть туда условный {ok, 1} - и что? Скажет, что у ок нет реализации.
источник

a

arikai in ErlangRus
Использование ключа __struct__ хотя бы делает возможность такого поведения на порядки меньше: если кто-то создал такую мапу умышленно, то вопросы к нему
источник

AB

Alex Bubnov in ErlangRus
arikai
Закинуть туда условный {ok, 1} - и что? Скажет, что у ок нет реализации.
так не реализуй протоколы для #ok{} и #state{}
источник

AB

Alex Bubnov in ErlangRus
ну серьезно, это что, нормальная причина делать до сих пор основной способ описания композитных данных в хостовом языке - second class citizen?
источник

AB

Alex Bubnov in ErlangRus
я подобное однозначно трактую как "нам примерно положить на интероп с хостом, мы сделаем свой уютненький мирок"
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Alex Bubnov
ну серьезно, это что, нормальная причина делать до сих пор основной способ описания композитных данных в хостовом языке - second class citizen?
Протоколы сами по себе уютная фигня, - в эрланге же нету
источник

YZ

Yuri Zhloba in ErlangRus
Simon
то что мне надо, только вот ни слова о лицензии под которой она опубликована ((
Ну мы не заморачиваемся с лицензиями. Если надо, я могу добавить MIT.
источник

DR

Dmitry Russ (Aleksandrov) in ErlangRus
Alex Bubnov
я подобное однозначно трактую как "нам примерно положить на интероп с хостом, мы сделаем свой уютненький мирок"
Есть Record - есть способ импортировать из hrl рекордов. В Elixir-е в этом плане всё удобно, рекорды поддерживаются и когда нужны - две строчки для их импорта.
источник

a

arikai in ErlangRus
Alex Bubnov
я подобное однозначно трактую как "нам примерно положить на интероп с хостом, мы сделаем свой уютненький мирок"
Почему ты постоянно выдумываешь какое то отсутствие интеропа? У тебя атом кто-то ворует с позиции тупла, что ты не можешь использовать рекорды? Тебе запретили с помощью Record.extract вытаскивать?
Ты реально троллишь или что?

Некоторые разрабы Эрланга сами признавали, что рекорды такие себе получились, но нет, они есть в Эрланге, значит все должны использовать их!!!1
источник

YZ

Yuri Zhloba in ErlangRus
Нету нормальных ADT ни в эликсире ни в эрланге. И там и там костыли. А разбираться, какие костыли костыльнее, так себе занятие.
источник

ka

ko a in ErlangRus
hello any one can help me to build proxy with out disconnect
источник

DR

Dmitry Russ (Aleksandrov) in ErlangRus
Yuri Zhloba
Нету нормальных ADT ни в эликсире ни в эрланге. И там и там костыли. А разбираться, какие костыли костыльнее, так себе занятие.
Есть же algae 😂 (ирония если что).
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Я так понимаю, что нету ADT потому что на другой ноде может не быть такого типа
источник

a

arikai in ErlangRus
Yuri Zhloba
Нету нормальных ADT ни в эликсире ни в эрланге. И там и там костыли. А разбираться, какие костыли костыльнее, так себе занятие.
Вот именно. Что там реализовано с помощью существующих средств, что здесь. Основываться на одинаково костыльной реализации в Эрланге при реализации похожего концепта в Эликсире - глупо. Причём глупо в обе стороны. Учитывать и обеспечивать средствами по работе с ним - ещё ок
источник