Size: a a a

2021 May 10

YK

Yakov Kozlov in pro.elixir
Прошу прощения. У ребенка был телефон :/
источник

T

Tharin in pro.elixir
И он переслал рекламу?)) Маркетолог растёт, получается
источник

YK

Yakov Kozlov in pro.elixir
просто пальцами по экрану. А так, получается, что да - маркетолог растет 🙈
источник

AK

Andy Krasnov in pro.elixir
источник

ع

عاصم بن حارث... in pro.elixir
😂👍
источник
2021 May 11

Е

Евгений in pro.elixir
Мне кажется я неправ. Подтвердите или опровергните, пож.
Я заметил, что все время пытаюсь пихать странные оптимизации.
Например у меня есть мапа, и мне надо пробежаться по ее элементам, какие-то из них надо поменять, а какие-то удалить.
Ну я думаю: чего два раза бегать по мапе, если можно за один раз все сделать? И начинаются всякие толстые reduce, упрощенно
Enum.reduce(map, map, fn {k, v}, map ->
 case k do
     {1, d} -> Map.put(map, k, v + d)
     {2, _} -> Map.delete(map, k)
 end
end)

В более сложных случаях все превращается в лютое нечитаемое говно.

Напрашиватеся другой вариант:
map
|> Enum.map(fn
 {{1, d} = k, v} -> {k, v + d}
 e -> e
end)
|> Enum.filter(&match?({2, _}, &1))
|> Enum.into(%{})

Он куда более понятен, но тут бегаем фактически три раза. В ленивом хацкеле бегалось бы один раз, но тут наверняка три раза будет.
Но с другой стороны и хер бы с ним, мапы небольшие, может сотня-другая пар максимально.

Что скажете?
источник

P

Purple in pro.elixir
Я тоже пилю толстые велосипеды чтобы "эффективно" было :)) Для повышения читабельности по классике разбиваю на подфункции
источник

DG

Dmitry Grach in pro.elixir
Я думаю можно поискать в сторону кложурных трансдьюсеров https://github.com/garyposter/elixir-transducer
источник

Е

Евгений in pro.elixir
Я тоже стараюсь. В итоге куча функций, которым еще надо названия придумать вменяемые. Все равно говно получается :)
источник

LL

Lama Lover in pro.elixir
First, make it correct. Then, make it beautiful. Then, if you need to, make it performant. Because 9 times out of 10, making it beautiful also makes it performant enough.
источник

P

Purple in pro.elixir
:))
источник

AM

Aliaksandr Martsinov... in pro.elixir
Разве Stream не это делает?
источник

LL

Lama Lover in pro.elixir
Лучше просто использовать Stream, который делает абсолютно всё то же самое, только без DSL
источник

LL

Lama Lover in pro.elixir
Enum эффективнее чем Stream
источник

LL

Lama Lover in pro.elixir
Не спрашивайте почему
источник

AM

Aliaksandr Martsinov... in pro.elixir
почему
источник

Е

Евгений in pro.elixir
Интересная штука. Спасибо!
источник

DG

Dmitry Grach in pro.elixir
Вот как раз в readme по ссылке - предлагается и Stream )
источник

A ß in pro.elixir
потому что под капотом все в списках гоняет
источник

DG

Dmitry Grach in pro.elixir
Репозиторий покрыт пылью, но там реализация очень маленькая и интересна само направление мысли.
источник