announcing Smerl: Simple Erlang Metaprogramming library

Yariv Sadan <>
Tue Aug 15 17:55:05 CEST 2006


Sorry, I just noticed I posted https links. Please visit

http://yarivsblog.com/articles/2006/08/14/smerl-simple-metaprogramming-for-erlang

for the blog entry and

http://yarivsblog.com/files/smerl.erl

for the direct download.

Thanks,
Yariv

On 8/14/06, Yariv Sadan <> wrote:
> Hi,
>
> Digging through Ulf Wiger's rdbms_codegen.erl module in Jungerl, I
> discovered Erlang's wonderful capabilities for runtime code generation
> and manipulation. As great as these capabilities are, I think they are
> far from obvious to the non-expert programmer. That's why I created
> Smerl, simple library for (runtime) Erlang metaprogramming.
>
> To read more about Smerl and to download it, visit my blog:
> https://yarivsblog.com/articles/2006/08/14/smerl-simple-metaprogramming-for-erlang.
>
> Here's a direct download link:
> https://yarivsblog.com/files/smerl.erl
>
> Here's a quick example of how to use Smerl:
>
> test_smerl() ->
>   C1 = smerl:new(foo).
>   {ok, C2} = smerl:add_func(C1, "bar() -> 1 + 1.").
>   smerl:compile(C2),
>   foo:bar().   % returns 2
>
> Smerl also lets you work with abstract Erlang forms. The 3rd line of
> the above example can be rewritten as
>
> {ok,C2} = smerl:add_func(C1, {function,1,bar,0,
>            [{clause,1,[],[],
>              [{op,1,'+',{integer,1,1},{integer,1,1}}]}]).
>
> Smerl allows you to both create new module in runtime and to
> manipulate existing modules by adding and removing functions.
>
> If you have any comments, problems or suggestions, please let me know!
>
> Best regards,
> Yariv
>



More information about the erlang-questions mailing list