Size: a a a

Clojure — русскоговорящее сообщество

2020 November 09

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Alex Bubnov
я не искал, но мы внедряем эликсир потихоньку, слабое подобие кложи, но всё терпимо
почему слабое?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Kirill Chernyshov
почему слабое?
ну, он с синтаксисом, без мультиметодов, ущербный репл, и в целом beam гораздо статичнее
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
beam статичнее jvm?
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Alex Bubnov
ну, он с синтаксисом, без мультиметодов, ущербный репл, и в целом beam гораздо статичнее
зато с паттернматчингом и ассинхроншина как-то попроще кмк
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Tim Plotnikov
beam статичнее jvm?
Там почти полностью отсутствует рантайм-полиморфизм. Кое-что есть, но довольно ограниченное.
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Alex Bubnov
я не искал, но мы внедряем эликсир потихоньку, слабое подобие кложи, но всё терпимо
да половина рубистов перешли в элексир как бы 🙂
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
Alex Bubnov
ну, он с синтаксисом, без мультиметодов, ущербный репл, и в целом beam гораздо статичнее
Эм, там же можно объявить несколько функций с одним и тем же именем но разной арностью и имплементировать каждую из них по-разному. Разве это не то же самое что мультиметоды?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Camina Drummer
Эм, там же можно объявить несколько функций с одним и тем же именем но разной арностью и имплементировать каждую из них по-разному. Разве это не то же самое что мультиметоды?
Нет. Мультиметод это open case, расширенное понимание протокола с произвольным предикатом
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Camina Drummer
Эм, там же можно объявить несколько функций с одним и тем же именем но разной арностью и имплементировать каждую из них по-разному. Разве это не то же самое что мультиметоды?
Посмотри на integrant в качестве примера, я лучшего применения мультиметодов не знаю
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
alright, посмотрела и осознала что не так понимала мультиметоды и мне такое пока рано
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Мультиметоды просто диспетчеризуются с помощью заданной функции диспетчеризации, т.е. при каждом вызове она вызывается и возвращает какое-то значение. Где-то внутри есть маппинг результата функции диспетчеризации в реализацию.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Camina Drummer
alright, посмотрела и осознала что не так понимала мультиметоды и мне такое пока рано
Простыми словами: при вызове мультиметода вызываем "функцию диспетчеризации", которая из аргументов вызова возвращает какое-то значение (например, keyword). Дальше ищем реализацию исходного вызываемого мультиметода для данного значения (keyword-а)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Естественно, можно использовать не только keyword-ы
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Это позволяет офигенно просто решить expression problem (https://en.m.wikipedia.org/wiki/Expression_problem)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Минус в том, что это работает гораздо медленнее, чем обычный полиморфизм, но зато очень выразительно)
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
Спасибо, попробую переварить
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Mikhail Borisov
Минус в том, что это работает гораздо медленнее, чем обычный полиморфизм, но зато очень выразительно)
Там ещё и иерархию можно использовать, но этого я вообще мало видал.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
Там ещё и иерархию можно использовать, но этого я вообще мало видал.
Иерархию мультиметодов?
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Mikhail Borisov
Минус в том, что это работает гораздо медленнее, чем обычный полиморфизм, но зато очень выразительно)
"Гораздо медленнее" очень относительно — т.е. пока это печь не станет, можно жить и не думать.
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
"Гораздо медленнее" очень относительно — т.е. пока это печь не станет, можно жить и не думать.
Ну тут просили такие ремарки делать, я сделал)
источник