В эрланге есть такая синтаксическая форма как записи. Это ни в коем случае не семантическая структура, а просто syntax sugar.
-record(article, {
id,
user_id = 0,
body = <<>>,
published = false
}).
Хочу немного прояснить как они используются и что это вообще такое для тех, кто ещё только начинает знакомиться с эрлангом.
В erlyvideo есть одно неприятное место: в конфиге можно указать несколько виртуальных хостов и каждому из них будет соответствовать собственный сервер, хранящий ссылки на видеопотоки. Супервизор каждого сервера надо именовать, причём атомом, например для хоста default супервизор будет называться media_provider_sup_default. Генерация такого названия достаточно неприятно выглядит:
Name = binary_to_atom(<<"media_provider_sup_",
(atom_to_binary(Host, latin1))/binary>>, latin1).
Технические проблемы на этом заканчиваются, но мне захотелось попробовать, как сделать автокомпилирующийся
на каждой реконфигурации модуль, в котором все vhost-ы забиты в клозы функций. Такой трюк может понадобиться например если такое преобразование происходит очень часто.
В случае со склейкой строк, на каждом вызове функции будет создаваться два бинари. Если же скомпилировать это в модуль, получится многократно быстрее, потому
что не будет никаких лишних выделений памяти. Сделать это оказалось несложно: