Size: a a a

2020 November 09

DF

Denis Fakhrtdinov in pro.elixir
Да не в шесть раз дольше.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Разве нет?
Отчасти,

Во-первых, протокол имплементируется и для встроенных типов данных аля list или integer

Во-вторых, протоколы возвращают нормальные ошибки, когда вызываются для незаимплементированных типов

Может ещё что вспомню
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Да не в шесть раз дольше.
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну да, это понятно.
источник

DF

Denis Fakhrtdinov in pro.elixir
Это стоимость самого вызова.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Это стоимость самого вызова.
Ну я про это и говорил
источник

DF

Denis Fakhrtdinov in pro.elixir
Он по сравнению со стоимостью самой функции — копейки.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Он по сравнению со стоимостью самой функции — копейки.
Не правда
Если функция это x + y, то это существенная разница
источник

DF

Denis Fakhrtdinov in pro.elixir
У вас половина OTP на apply работает, не припекает же нигде.
источник

AB

Alex Bubnov in pro.elixir
вообще, я очень не понимаю, почему аффтары не сделали open case, типа мультиметодов, а поверх него можно было бы нарисовать протоколы
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
У вас половина OTP на apply работает, не припекает же нигде.
Не припекает, но всё-таки, есть
* удобный
* простой как палка
* более быстрый
способ сделать это
Почему бы и нет?
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну в таком случае, конечно, да.
источник

DF

Denis Fakhrtdinov in pro.elixir
Я пытался понять разницу между behavior и protocol.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
вообще, я очень не понимаю, почему аффтары не сделали open case, типа мультиметодов, а поверх него можно было бы нарисовать протоколы
Есть какие-то библиотеки для чего-то такого
Видел недавно
Но они, какие-то такие себе. Они ещё и антипроизводительные, наверное...
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Есть какие-то библиотеки для чего-то такого
Видел недавно
Но они, какие-то такие себе. Они ещё и антипроизводительные, наверное...
по производительности как протокол выходит
источник

DF

Denis Fakhrtdinov in pro.elixir
Premature optimization is the root of evil.
источник

AB

Alex Bubnov in pro.elixir
но там напороть легко
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Я пытался понять разницу между behavior и protocol.
Ну тут скорее какая-то ментальная разница.
behaviour -- это про поведение модуля в конкретном месте
protocol -- это про поведение данных в конкретном случае

Мой самый любимый пример это протокол Jason.Encoder, который ты можешь определить для какой-то своей структуры, чтобы правильно её энкодить в JSON

Делать это через behaviour было бы немного странно, по-моему
источник

DF

Denis Fakhrtdinov in pro.elixir
Видимо, так, потому что для меня behavior в этом случае выглядит как раз логичным решением :)
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну или явная передача fun как коллбека для запаковки.
источник