parse_trans/examples/ex_codegen.erl

84 lines
1.3 KiB
Erlang
Raw Normal View History

2010-06-22 10:37:08 +00:00
-module(ex_codegen).
-compile({parse_transform, parse_trans_codegen}).
-export([f/1, g/2, h/0, i/0, j/2, k/0, k/1, gen/2, fs/0]).
2010-06-22 10:37:08 +00:00
%%-pt_pp_forms(true).
-pt_pp_src(true).
2010-06-22 10:37:08 +00:00
f(Name) ->
codegen:gen_function(
Name,
fun(1,2,3) ->
foo;
(A,B,C) ->
{A,B,C}
end).
2010-06-22 14:16:11 +00:00
g(Name, V) ->
codegen:gen_function(
Name,
fun(L) ->
member({'$var',V}, L)
end).
2010-09-05 12:32:59 +00:00
h() ->
codegen:gen_function(
funny,
fun() ->
fun gen/2
end).
i() ->
codegen:exprs(fun(X) ->
case X of 1 ->
is_1;
Other ->
{is_other,Other}
end
end).
j(Name, Form) ->
codegen:gen_function(
Name,
fun(L) ->
member({'$form',Form}, L)
end).
2010-07-02 10:39:05 +00:00
x() ->
[(fun(X) ->
X
end)(X1) || X1 <- [1,2]].
k() ->
codegen:gen_function(
lcf,
[fun({'$var',X}) ->
{'$var',Y}
end || {X, Y} <- [{1,a},{2,b},{3,c}]]).
k(L) ->
codegen:gen_function(
lcf,
[fun({'$var',X}) ->
{'$var',Y}
end || {X, Y} <- L]).
2010-07-02 10:39:05 +00:00
gen(Name, X) ->
codegen:gen_function(Name, fun(L) -> lists:member({'$var',X}, L) end).
2010-09-05 12:32:59 +00:00
fs() ->
V = local_V,
codegen:gen_functions(
[{foo, fun() ->
foo
end},
{h1, fun h/0},
{g1, fun g/2},
{bar, fun() ->
bar
end}]).