Size: a a a

2021 January 02

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
У меня вызывает неприязнь функция, которая получает одного пользователя а не их список
Держи Enum.map/2
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Держи Enum.map/2
Видел я таких мапперов...


“SELECT * from users WHERE users.id = ?” 200 раз
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А потом ещё один мап, который берет одно поле из этого селекта
источник

AD

Anastasiya Dyachenko in pro.elixir
Евгений
Вопрос-то не об этом. Вопрос о самом стиле. В какой-нибудь императивщине вот такой код не вызывает ни малейшего неприятия:
User[] users;
foreach(uid; uids) {
 users ~= getUser(uid);
 sendHello(uid);
}
В императивном стиле это тоже выглядит не норм, у функции должна быть определенная задача. Либо получить список юзеров либо отправить всем сообщение
источник

Е

Евгений in pro.elixir
Anastasiya Dyachenko
В императивном стиле это тоже выглядит не норм, у функции должна быть определенная задача. Либо получить список юзеров либо отправить всем сообщение
Ну так это не функция, а некая часть более общей функции.
источник

Е

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

Е

Евгений in pro.elixir
Это не вызывает вопросов, потому что foreach не является функцией и ничего не возвращает.
источник

IK

Ihor Katkov 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)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?
Не нравится потому, что ты путаешь уровни абстракций.

ids
|> get_users
|> send_notifications

Enum функции уже детали реализации, которые ты должен спрятать за бизнес логикой
источник

Е

Евгений in pro.elixir
Ihor Katkov
Не нравится потому, что ты путаешь уровни абстракций.

ids
|> get_users
|> send_notifications

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

IK

Ihor Katkov in pro.elixir
Тогда у тебя бы не возникло такого вопроса 🤷‍♂️
источник

Е

Евгений in pro.elixir
Ihor Katkov
Тогда у тебя бы не возникло такого вопроса 🤷‍♂️
Там функция инициализации генсервера, работающая с коротким списком сущностей. Нужно разослать некие сообщения процессам связанным с элементами этого списка (только при инициализации) и сформировать стейт, который представляет из себя немного видоизмененный этот же список.
Тут разные уровни абстракции?
источник

A ß in pro.elixir
да
источник

P

Pavel in pro.elixir
Вообще если send notification лезет в третий сервис я бы закидывал это в очередь
источник

LL

Lama Lover in pro.elixir
Евгений
Там функция инициализации генсервера, работающая с коротким списком сущностей. Нужно разослать некие сообщения процессам связанным с элементами этого списка (только при инициализации) и сформировать стейт, который представляет из себя немного видоизмененный этот же список.
Тут разные уровни абстракции?
У меня тут есть вопрос, чат, есть код
Enum.map(uids, fn uid ->
 user = get_user(uid)
 order_pizza(user)
end)

Только тут не get_user, а посылка сообщения в процесс, и не order_pizza, а md5-хэширование, и тут не Enum.map, а Enum.reduce и вообще это не Elixir, а Ruby...
источник

Е

Евгений in pro.elixir
Как обычно, токсичненько и бесполезно :)
источник

LL

Lama Lover in pro.elixir
Евгений
Как обычно, токсичненько и бесполезно :)
Ты первый начал
источник

Е

Евгений in pro.elixir
Lama Lover
Ты первый начал
Я вроде ничего токсичного не писал :)
источник

A ß in pro.elixir
Lama Lover
У меня тут есть вопрос, чат, есть код
Enum.map(uids, fn uid ->
 user = get_user(uid)
 order_pizza(user)
end)

Только тут не get_user, а посылка сообщения в процесс, и не order_pizza, а md5-хэширование, и тут не Enum.map, а Enum.reduce и вообще это не Elixir, а Ruby...
я думаю тебе срочно нужен Witchcraft и три часа видео про монады внутривенно
источник

T

Tharin in pro.elixir
A ß
я думаю тебе срочно нужен Witchcraft и три часа видео про монады внутривенно
А можно мне?
источник

LL

Lama Lover in pro.elixir
Евгений
Я вроде ничего токсичного не писал :)
> Потому что трата вашего времени вызывает у меня злорадное садистское чувство.
источник