Size: a a a

2021 May 06

V

V in pro.elixir
не сами языки, а погромисты на них
внезапно не осиливали и скатывались в императивщину
источник

V

V in pro.elixir
внезапно оказывалось, что цикл таки существует
источник

DT

Denis Tankov in pro.elixir
где существует ?
источник

V

V in pro.elixir
под капотом.
чтобы использование throw/catch было корректным - текущая парадигма должна подразумевать существование циклов
источник

AI

Alexis IV Mobius in pro.elixir
Ну, не совсем, скорее существование нелокальных возвратов
источник

AI

Alexis IV Mobius in pro.elixir
break это частный случай нелокального возврата
источник

AI

Alexis IV Mobius in pro.elixir
но вообще это довольно медленно и лучше юзать take_while
источник

A ß in pro.elixir
где медленно, а где и нет
источник

AI

Alexis IV Mobius in pro.elixir
throw/catch довольно медленная и неприятная операция в BEAM
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Достаточно быстрая
источник

V

V in pro.elixir
что, конвейер не сбрасывается?
источник

AI

Alexis IV Mobius in pro.elixir
Не, это хуже, чем вызов другого модуля, емнип, даже когда catch в том же.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
источник

AI

Alexis IV Mobius in pro.elixir
Потому что машина не знает, в том же или нет.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Всего то в 2 раза медленнее
источник

AI

Alexis IV Mobius in pro.elixir
Это синтетический достаточно тест, в котором куча времени уходит на вызов функции.
источник

V

V in pro.elixir
Вопрос в том, насколько ожидаем throw с точки зрения алгоритма. Если он ожидаем - то это лучше явно запрограммировать. Потому что иначе сбросится конвейер процессора.
Алгоритм с рабочим TCO хорошо конвейеризируется. throw/catch - подозреваю, не очень
источник

AI

Alexis IV Mobius in pro.elixir
Мне кажется, когда мы работаем с виртуальной машиной, то конвейеризация на уровне процессора вообще хм не гарантирована.
источник

Е

Евгений in pro.elixir
Поможите, народ. хочу у себя в спеках использовать тайпспеки из мнезии, например этот :mnesia.table()
Добавил в зонтичный mix.exs в project строку
dialyzer: [plt_add_apps: [:mnesia]]
Не помогает, диалайзер ругается:
Unknown type: :mnesia.table/0.
ЧЯДНТ?
источник

AI

Alexis IV Mobius in pro.elixir
А он экспортирован?
источник