Erlang – exemple 00

Ce premier exemple montre quelques opérations dans la console interactive d'Erlang.

Remarques Code

Erlang s'utilise entre autres en mode interactif, dans un interpréteur de commandes (un shell).

L'exemple à droite montre une telle interaction. On remarquera :

  • Que chaque instruction se termine par un . (par exemple X = 123456. est une instruction complète, alors que Y = 654321 n'en est pas une, ne se terminant pas par un .)
  • Le langage est sensible à la casse (ici, x et X sont deux entités différentes). D'ailleurs, les noms des variables doivent débuter par une majuscule
  • Il n'est pas possible d'associer une valeur à une entité dont le nom débute par une minuscule. On voit ceci à la ligne 5> où l'expression x = 3. est tentée mais refusée. Un nom débutant par une minuscule n'est pas une variable mais bien un atome, un pur symbole
  • Une variable, une fois liée à une valeur, ne peut plus changer de valeur. Ceci explique la réaction du moteur à la ligne 6> à droite, lors de notre tentative d'affecter une deuxième valeur à X. Remarquez d'ailleurs le message d'erreur, instructif : no match of right hand side with value 3. Il s'agit du même message d'erreur que dans le cas de l'instruction précédente (x = 3.)
  • Évidemment, il est possible d'évaluer des expressions à même le shell. Ceci permet entre autres de constater qu'Erlang supporte l'arithmétique exacte (comme le montre l'expression 8>)
Erlang R14B (erts-5.8.1.1) [smp:2:2] [rq:2] [async-threads:0]
Eshell V5.8.1.1  (abort with ^G)
1> X=123456.
123456
2> Y = 654321
2> .
654321
3> Z=x*Y
3> .
** exception error: bad argument in an arithmetic expression
in operator  */2
called as x * 654321
4> Z = X * Y.
80779853376
5> x = 3.
** exception error: no match of right hand side value 3
6> X = 3.
** exception error: no match of right hand side value 3
7> 123 + 456.
579
8> 123456789*987654321.
121932631112635269
9> 

Quelques concepts :

Erlang est un langage fonctionnel. Cela se reflète dans l'implémentation de ses concepts clés.


Valid XHTML 1.0 Transitional

CSS Valide !