Size: a a a

2021 January 01

B

Bogdan in pro.elixir
A ß
ананасовый рассол
Надо попробовать. В целом все прошло, после бульона :))
источник

h

hukendo in pro.elixir
Bogdan
Какой Эликсир посоветуете, чтобы наркоз прошёл?
источник

AL

Anton Lapshin in pro.elixir
источник

AL

Anton Lapshin in pro.elixir
источник

T

TGG in pro.elixir
@Virviil бот
источник
2021 January 02

Е

Евгений in pro.elixir
Кошерно ли в Enum.map вызывать функции с сайд-эффектами? Типа вместо:
users = Enum.map(uids, &get_user(&1))
Enum.each(uids, &send_hello(uid))
написать:
users = Enum.map(uids, fn uid ->
 send_hello(uid)
 get_user(uid)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?
источник

Е

Евгений in pro.elixir
У меня даже хуже потому, что не Enum.map, а Enum.into. Со вторым попахивание кагбэ усиливается.
источник

A ß in pro.elixir
сможешь придумать как назвать такую функцию?
источник

Е

Евгений in pro.elixir
A ß
сможешь придумать как назвать такую функцию?
Нет. Поэтому и попахивает. Какая-то странная комбинация-оптимизация.
источник

Е

Евгений in pro.elixir
get_user_and_send_hello() :)
источник

V

V in pro.elixir
Евгений
Кошерно ли в Enum.map вызывать функции с сайд-эффектами? Типа вместо:
users = Enum.map(uids, &get_user(&1))
Enum.each(uids, &send_hello(uid))
написать:
users = Enum.map(uids, fn uid ->
 send_hello(uid)
 get_user(uid)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?
Всё правильно говоришь, выглядит отвратительно. Можешь придумать способ порицания для нарушителей.
источник

Е

Евгений in pro.elixir
Я сам так напейсал, теперь вот смотрю и подташнивает. Думаю, может я заразился ФПГМ?
источник

A ß in pro.elixir
welcome to the club, buddy
источник

Е

Евгений in pro.elixir
Короче: "Чувак, да, ты больной и это нормально." :))))
источник

LL

Lama Lover in pro.elixir
Евгений
Кошерно ли в Enum.map вызывать функции с сайд-эффектами? Типа вместо:
users = Enum.map(uids, &get_user(&1))
Enum.each(uids, &send_hello(uid))
написать:
users = Enum.map(uids, fn uid ->
 send_hello(uid)
 get_user(uid)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?
Так ты отдели сайд-эффект от чистой функции

И вызывай что-то типа
uids
|> Enum.map(&get_user/1)
|> Enun.each(&send_hello/1)

PS: Я тут немного логику поменял, соре
источник

Е

Евгений in pro.elixir
Lama Lover
Так ты отдели сайд-эффект от чистой функции

И вызывай что-то типа
uids
|> Enum.map(&get_user/1)
|> Enun.each(&send_hello/1)

PS: Я тут немного логику поменял, соре
Вопрос-то не об этом. Вопрос о самом стиле. В какой-нибудь императивщине вот такой код не вызывает ни малейшего неприятия:
User[] users;
foreach(uid; uids) {
 users ~= getUser(uid);
 sendHello(uid);
}
источник

Е

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

Е

Евгений in pro.elixir
В моем случае список гарантировано крошечный, так что оптимизировать бессмысленно.
источник

LL

Lama Lover in pro.elixir
Ну тут сложность одинаковая (O(n)), но компилятор не будет оптимизировать два прохода в один, так что лучше сделать один Enum.map
С другой стороны, тут разная логика

В первом случае, если get_user падает, то сообщения никому не отправятся
Во втором случае, если get_user падает, то сообщения отправятся некоторым, но не всем

Я бы выбрал первый вариант
источник

Е

Евгений in pro.elixir
Да, тоже аргумент, кстати.
источник