Size: a a a

2020 May 25

AB

Alex Bubnov in pro.elixir
Таких подходов, как в beam нигде нет.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
Я не очень понимаю, какую ты видишь причинно-следственную связь здесь, но да, в clojure можно использовать implicit мутабельность
Если системные треды, то это значит что акторов не много, значит копировать не жалко, и, например, делить память немного проще, чем когда акторов несколько тысяч.
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Если системные треды, то это значит что акторов не много, значит копировать не жалко, и, например, делить память немного проще, чем когда акторов несколько тысяч.
На мой взгляд это ортогональные вещи. В том же go гринтреды поверх общей мутабельной памяти.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
На мой взгляд это ортогональные вещи. В том же go гринтреды поверх общей мутабельной памяти.
Ну, ты прав, но у меня есть ощущение некоторой корреляции отсутствия гринтредов и наличия ложной иммутабельности
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
К сожалению, у тебя врятли получится
x = something()
f(x)
g(x)


Независимо от того что происходит внутри f(x), x в текущем контексте никак не изменится ни внутри, ни уж тем более по опреациям взаимодействия
посыпаю голову пеплом!
источник

VI

Victor Ivanov in pro.elixir
Кто-нибудь знает, есть ли более быстрый способ достать неименнованную ets табличку?
acc = fn {channel, _}, map -> Map.update(map, channel, 1, &(&1 + 1)) end
table_names = [App.PubSub.KeyPartition0, App.PubSub.KeyPartition1]

:ets.all()
|> Enum.filter(fn x -> x != :undefined end)
|> Enum.map(fn x -> :ets.info(x) end)
|> Enum.filter(fn x -> Enum.member?(table_names, Keyword.get(x, :name)) end)
|> Enum.map(fn x -> :ets.foldl(acc, %{}, Keyword.get(x, :id)) end)
|> Enum.map(fn x -> x["log:everyone"] || 0 end)
|> Enum.sum()
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
Ну, ты прав, но у меня есть ощущение некоторой корреляции отсутствия гринтредов и наличия ложной иммутабельности
ну "ложная иммутабельность" это что-то странное. иммутабельность то про интерфейсы.

хаскель сложно обвинить в императивности, но ровно такой же по свойствам код как я на кложе привел будет выгдядеть так:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
источник

AR

Andrew Rudenko in pro.elixir
гринтреды там есть, если что
источник

LL

Lama Lover in pro.elixir
Andrew Rudenko
ну "ложная иммутабельность" это что-то странное. иммутабельность то про интерфейсы.

хаскель сложно обвинить в императивности, но ровно такой же по свойствам код как я на кложе привел будет выгдядеть так:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Это понятно, но если тебе нужно, например, отправить эту коллекцию на другую ноду - как она будет выглядеть? Мемоизированная? Как определение? Или как-то иначе?
источник

PG

Pig Greenest in pro.elixir
Lama Lover
Это понятно, но если тебе нужно, например, отправить эту коллекцию на другую ноду - как она будет выглядеть? Мемоизированная? Как определение? Или как-то иначе?
никак, это нульарная функция
источник

AB

Alex Bubnov in pro.elixir
вот кстати про хаскель - я опять забыл, там кэшируются результаты вычисления thunk-ов?
источник

LL

Lama Lover in pro.elixir
Pig Greenest
никак, это нульарная функция
Но в erlang можно пересылать функции. И это работает достаточно быстро, фактически немногим медленнее чем memcpy из памяти в сетевой буффер
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
Это понятно, но если тебе нужно, например, отправить эту коллекцию на другую ноду - как она будет выглядеть? Мемоизированная? Как определение? Или как-то иначе?
гуд квешен! не, полное отсутствие мутабельности в beam в контексте одного эктора — это оч круто и упрощает всю систему невероятно, мне нра )
источник

AR

Andrew Rudenko in pro.elixir
Alex Bubnov
вот кстати про хаскель - я опять забыл, там кэшируются результаты вычисления thunk-ов?
ну там типа GHC МОЖЕТ закешить, если посчитает нужным, но я не эксперт нифига
источник

PG

Pig Greenest in pro.elixir
а какая у нас задача, транслировать хаскельно-кложурное объявление?
источник

PG

Pig Greenest in pro.elixir
Alex Bubnov
вот кстати про хаскель - я опять забыл, там кэшируются результаты вычисления thunk-ов?
можно и так сказать
источник

AR

Andrew Rudenko in pro.elixir
Pig Greenest
а какая у нас задача, транслировать хаскельно-кложурное объявление?
да просто за рекурсию затирали, я набросил про рекурсию на стримах
источник

PG

Pig Greenest in pro.elixir
она не особо нужна
источник

PG

Pig Greenest in pro.elixir
Stream.unfold({0, 1}, fn {curr, next} -> {curr, {next, next + curr}} end)
источник

PG

Pig Greenest in pro.elixir
или через resource/3
источник