Az ERLANG programozási nyelv

Típusok, típuskonstrukciók

Típusok, elemi típusok, típuskonstrukciók

A nyelv beépített típusairól lásd Azonosítók, literálok részt. Az ERLANG nem támogatja új típusok létrehozását, viszont a beépített típusokat kombinálva különböző mintájú termeket hozhatunk létre.

Típuskonverziók

A nyelv számos konverziós függvénnyel rendelkezik, melyek a beépített adattípusok egymást közti alakítására alkalmasak. Ezek BIF (Built In Function) - ök.

Például:

1> atom_to_list(hello). "hello" 2> list_to_atom("hello"). hello 3> binary_to_list(<<"hello">>). "hello" 4> binary_to_list(<<104,101,108,108,111>>). "hello" 5> list_to_binary("hello"). <<104,101,108,108,111>> 6> float_to_list(7.0). "7.00000000000000000000e+00" 7> list_to_float("7.000e+00"). 7.00000 8> integer_to_list(77). "77" 9> list_to_integer("77"). 77 10> tuple_to_list({a,b,c}). [a,b,c] 11> list_to_tuple([a,b,c]). {a,b,c} 12> term_to_binary({a,b,c}). <<131,104,3,100,0,1,97,100,0,1,98,100,0,1,99>> 13> binary_to_term(<<131,104,3,100,0,1,97,100,0,1,98,100,0,1,99>>). {a,b,c}

Változók, konstansok

Az Azonosítók, literálok résznél leírtak érvényesek itt is.

Kifejezések, operátorok

Kifejezések kiértékelése

A kifejezések szintaxisa megegyezik a minták szintaxisával annyi eltéréssel, hogy a kifejezés tartalmazhat függvényhívásokat és hagyományos infix aritmetikai kifejezéseket. A függvényhívások módja a megszokott, pl. area:triangle(A,B,C) az area:triangle függvény hívását jelenti, A, B és C aktuális paraméterekkel

A kifejezés vele izomorf termmé értékelődik ki. Függvényhíváskor először a függvény argumentumai értékelődnek ki. A kiértékelő tekinthető egy e függvénynek, mely a kifejezést alaptermmé redukálja:

e(X) ha Konstans(X) %-> X e({t1, t2,..., tn}) %-> {e(t1), e(t2),...,e(tn)} e([t1, t2,,..., tn]) %-> [e(t1), e(t2),...,e(tn)] e(fuggvenynev(t1, t2,..., tn)) %-> APPLY(fuggvenynev,[e(t1), e(t2),...,e(tn)])

ahol APPLY egy olyan függvényt jelent, mely az első argumentumában szereplő függvényt a további argumentumokban szereplő paraméterekkel értékeli ki.

Operátorok

Operátorprecedencia
:   scope operátor
#   számrendszer választás
Unary + - bnot not    
/ * div rem band and bal asszociatív  
+ - bor bxor bsl bsr or xor bal asszociatív  
++ -- jobb asszociatív listához elem hozzáfűzése, törlése
== /= =< < >= > =:= =/= - összehasonlító operátorok
andalso    
orelse    
= ! jobb asszociatív  
catch