Size: a a a

2020 July 14

AB

Alex Bubnov in pro.elixir
короче, если есть макросы и мультиметоды, это всё aop делается на коленке без выделенного понятия
источник

AB

Alex Bubnov in pro.elixir
у нас нет мультиметодов, это печально
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
у нас нет мультиметодов, это печально
У нас есть паттернматчинг и протоколы, что типа и есть мультиметоды
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
У нас есть паттернматчинг и протоколы, что типа и есть мультиметоды
не, это мягко говоря не совсем то.
источник

AB

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

LL

Lama Lover in pro.elixir
https://ru.wikipedia.org/wiki/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BC%D0%B5%D1%82%D0%BE%D0%B4#cite_note-14
Тут написано что в elixir есть мультиметоды, но я им не доверяю
источник

LL

Lama Lover in pro.elixir
Но я и не понимаю чем не устраивает паттернматчинг как множественный диспатчинг
источник

LL

Lama Lover in pro.elixir
Типа вот
def collide(%Spaceship{}, %Spaceship{}), do: ...
def collide(%Spaceship{}, %Asteroid{}), do: ...
def collide(%Asteroid{}, %Spaceship{}), do: ...
def collide(%Asteroid{}, %Asteroid{}), do: ...
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Типа вот
def collide(%Spaceship{}, %Spaceship{}), do: ...
def collide(%Spaceship{}, %Asteroid{}), do: ...
def collide(%Asteroid{}, %Spaceship{}), do: ...
def collide(%Asteroid{}, %Asteroid{}), do: ...
тем, что это мультиметоды, как и протоколы, можно расширять из произвольной точки в коде.
источник

PG

Pig Greenest in pro.elixir
Vladimir Sekisov
а как AOP использовать
в Elixir?
Для него нужны generic функции, наследование или
VM с имиджевой архитектурой.
Ничего из этого нет.
я правильно понимаю что AOP это эдвайсы в лиспах?
источник

AB

Alex Bubnov in pro.elixir
типа, мультиметод задекларирован в либе, а имплементация - в твоем коде
источник

AB

Alex Bubnov in pro.elixir
очень удобно, например, в integrant(да, опять кложа)
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
типа, мультиметод задекларирован в либе, а имплементация - в твоем коде
Ну вообще такие вещи в elixir сложно реализуются
Протоколы это пока что лучшее что у нас есть
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
У нас есть паттернматчинг и протоколы, что типа и есть мультиметоды
протоколы это полиморфизм по первому аргументу, мультиметоды это более общий концепт (и обычно менее эффективный)
источник

LL

Lama Lover in pro.elixir
В лиспах и пайтонах такое легко реализовать из-за "высокой интерпретируемости" языка
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Ну вообще такие вещи в elixir сложно реализуются
Протоколы это пока что лучшее что у нас есть
ну, не в эликсире, а в beam вообще, потому что в beam очень статический диспатч, если можно так выразиться
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
типа, мультиметод задекларирован в либе, а имплементация - в твоем коде
Это, кстати, можно через use реализовать
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
ну, не в эликсире, а в beam вообще, потому что в beam очень статический диспатч, если можно так выразиться
Да, это так
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Это, кстати, можно через use реализовать
ну вот не надо этого
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
ну вот не надо этого
Модульное программирование( ...
источник