Recbird - управление записями
Быть может вы читали блог Ярива Садана и знакомы с его библиотекой Recless, которая упрощает работу с записями(records). Главным ограничением этой библиотеки является то, что необходимо явно указывать тип записи. Например, следующий код не сработает:
get_name(Person) -> Person.name.
Приходится писать так:
get_name(Person = #person{}) -> Person.name.Caoyuan решил исправить это упущение. Его библиотека подназванием recbird доступна здесь.
Библиотека работает так. Пробежавшись по AST, она для каждого поля записи генерирует набор getters и setters, после чего почти везеде можно спокойно писать что-то вроде:
R.a.b.c
и
R.a.b.c = Sth
Скорость отработки тоже неплохая. Если вызвать R.a.b = "yes" 1 000 000 раз, то чистая версия на Эрланге занимает 300ms против 310ms при помощи recbird. На 10 000 000 миллионах вызовах recbird хуже Эрланга на 150%
Вся информация в блоге: http://blogtrader.net/page/dcaoyuan?entry=recbird_an_erlang_dynamic_record
