Frabjous
24-06-2008
Кевин Смит представляет библиотеку frabjous (доступную с сайта GitHub здесь: http://github.com/kevsmith/hypotheticalabs/tree/master).
Frabjous является оберткой над Erlang parse transforms:
- общается напрямую с компилятором, избавляя от необходимости пробегаться по всему дереву AST
- определяет новое поведение (behaviour), ast_transformer, которое можно испольовать для задания parse transforms.
Короткий пример:
-module(pt_test).
-define(SERVER, ?MODULE).
-include_lib("frabjous/include/frabjous.hrl").
-frabjous([{remote_call, [{debug, true}]}]).
-behaviour(gen_server).
Подключив frabjous.hrl, мы "включили" frabjous.
Трансформатор remote_call принимает атрибуты следующим образом:
-call_gen_server([{server, ?SERVER},
{name, add},
{vars, [x,y]}]).
и превращает их в функции таким образом:
add(X, Y) -> gen_server:call(?SERVER, {add, X, Y}).
* Frabjous - "термин", использованый Льюисом Кэроллом в "Алисе в Зазеркалье" в стихотворении Jabberwocky