Size: a a a

2020 May 20

LL

Lama Lover in pro.elixir
Andrew Rudenko
ну просто примерно все, что можно назвать magic в cs может быть внутри фразы "it's just macros" 🙂
Да, я понимаю, поэтому и написал этот абзац, чтобы было понятнее, почему конкретно эти макросы - безобидные
источник

AR

Andrew Rudenko in pro.elixir
ну это типа как сказать "это всего-лишь программа выполняемая на фон нойман машине, никакой магии" 🙂
источник

AB

Alex Bubnov in pro.elixir
Andrew Rudenko
ну если фантазировать, на сколько я понимаю, никто не мешает в beam эмедить БД на расте, например, в котором аллоцировать сколько угодно памяти вне beam, а beam использовать как уровень оркестрации и io-обработки 🙂
ты описал риак, barreldb, и еще наверное пачку приватных проектов
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
ну если фантазировать, на сколько я понимаю, никто не мешает в beam эмедить БД на расте, например, в котором аллоцировать сколько угодно памяти вне beam, а beam использовать как уровень оркестрации и io-обработки 🙂
По-моему, это лучший use-case для beam языков
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
Ну, я бы не стал готовить отдельную либу для трансормации таких данных. Типа настолько сильно повышать деларативность - немного вредно (как мне кажется). Не совсем ясно что будет происходит если, например, таких записей две или ни одной или какой-нибудь другой cornercase. В итоге всё равно придётся смотреть в код этой либы чтобы понять что происходит
ну в случае specter все оч понятно, что будет происходит в случае, если таких записей две
источник

AR

Andrew Rudenko in pro.elixir
собственно там эксплицитно sp/FIRST дальше
источник

AR

Andrew Rudenko in pro.elixir
можно и не sp/FIRST как ты понимаешь
источник

AR

Andrew Rudenko in pro.elixir
Alex Bubnov
ты описал риак, barreldb, и еще наверное пачку приватных проектов
> barreldb

иметь иконку гитбаха и хоститься на гитлабе 🙂
источник

AR

Andrew Rudenko in pro.elixir
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
собственно там эксплицитно sp/FIRST дальше
А, если так то ладно
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
Я как новичек хотел бы начать с наивных вопросов, если можно 🙂

Есть ли в эликсир экосистеме какие-то либки для описания селектов / трансформаций данных?


Ну типа таких: найти в мапе ключ :items в нем элемент с id = 1 и инкрементнуть в нем поле count.
Иными словами альтернативу https://github.com/redplanetlabs/specter/ ?

С ним на кложе подобная трансформация описывается как-то так:

(->>
 {:items [{:id 2 :count 2}
          {:id 1 :count 3}
          {:id 1 :count 4}]}
 (sp/transform [:items (sp/filterer #(= 1 (:id %))) sp/FIRST :count] inc))


=>
{:items [{:id 2, :count 2} {:id 1, :count 4} {:id 1, :count 4}]}


Ну или мб какая-то имплементация линз?
original
|> Map.update!(:items, fn items ->
 Enum.map(items, fn
   %{id: 1, count: x} = rec -> %{rec | count: x + 1}
   other -> other
 end)
end)
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
original
|> Map.update!(:items, fn items ->
 Enum.map(items, fn
   %{id: 1, count: x} = rec -> %{rec | count: x + 1}
   other -> other
 end)
end)
тут нет first как раз
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
тут нет first как раз
Да, это так, но как я понял тут структура изоморфна мапе с ключем id
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
original
|> Map.update!(:items, fn items ->
 Enum.map(items, fn
   %{id: 1, count: x} = rec -> %{rec | count: x + 1}
   other -> other
 end)
end)
Ну это типа вообще другое делает )
источник

AR

Andrew Rudenko in pro.elixir
Ааа
источник

AR

Andrew Rudenko in pro.elixir
Не, сорян
источник

AR

Andrew Rudenko in pro.elixir
Да, такое сработает, но оно не только менее декларативно и компактно, но и СИЛЬНО менее эффективно
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
Да, такое сработает, но оно не только менее декларативно и компактно, но и СИЛЬНО менее эффективно
Да, ето так
источник

LL

Lama Lover in pro.elixir
Поэтому советую хранить записи в мапе
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
Да, такое сработает, но оно не только менее декларативно и компактно, но и СИЛЬНО менее эффективно
Но, к сожалению, сложность в худшем случае у них одинакова, а другого способа для запросов по структурам вроде нет
источник