Az ERLANG programozási nyelv

Sablonok

Az ERLANG-ban absztrakt adattípusok megléte nélkül csak alprogramokból lehet sablont készíteni. Viszont, ez történhet paraméterrel, vagy másik alprogrammal.

Alprogrammal való sablonkészítés esetén különleges szintaxisra van szükség. Ilyenkor ún. névtelen Fun objektumokat hozunk létre, melynek szintaxisa a következő:

fun (Pattern11,...,Pattern1N) [when GuardSeq1] -> Body1; ...; (PatternK1,...,PatternKN) [when GuardSeqK] -> BodyK end

A létrehozandó objektumot teljesen hasonló módon definiáljuk, mint a függvények esetében, kivéve, hogy nincs függvénynév.

A kifejezés értéke maga függvény, például:

1> Fun1 = fun (X) -> X+1 end. #Fun<erl_eval.6.39074546> 2> Fun1(2). 3 3> Fun2 = fun (X) when X>=5 -> gt; (X) -> lt end. #Fun<erl_eval.6.39074546> 4> Fun2(7). gt

Példa a használatukra:

1> Fun1 = fun (X) -> X+1 end. #Fun<erl_eval.6.39074546> 2> Fun1(2). 3
print_list(File, List) -> {ok, Stream} = file:open(File, write), foreach(fun(File) -> io:format(Stream,"~p~n",[File]) end, List), file:close(Stream).

Egy kis érdekesség: függvényt generáló függvény:

> Adder = fun(X) -> fun(Y) -> X + Y end end. #Fun>erl_eval.6.72228031< > Add6 = Adder(6). #Fun>erl_eval.6.72228031< > Add6(10). 16