announcing Smerl: Simple Erlang Metaprogramming library

Ryan Rawson <>
Tue Aug 15 06:15:23 CEST 2006


is there a svn interface for the jungerl code?

-ryan


On 8/14/06, Yariv Sadan <> wrote:
> FYI, I just added a function called has_func for querying whether a
> module has a given function.
>
> Enjoy
>
> 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