Citation :Le pattern-matching par contre c'est quelque chose que je n'ai jamais créé, faudrait peut-être que je m'y intéresse.
C'est assez chaud je pense. Si tu te lances il faut bien piger le fonctionnement d'Elixir : l'opérateur
=
n'est pas un opérateur d'assignement comme dans les langages style C, Java, PHP, JS, … C'est un opérateur de "match" et de "bind".De "match" parce qu'il vérifie que l'expression de gauche match l'expression de droite. Par exemple tu peux très bien écrire
true = 1 > 0
. Dans le cas où ton expression de gauche est une simple variable, ça match toujours.De "bind" parce que les variables exprimées à gauche sont "bindées" (en bon français) aux expressions auxquelles on les compare. SI la variable existait déjà, on ne modifie pas l'emplacement mémoire auquel elle faisait référence, on la "bind" à un nouvel emplacement. En gros c'est une nouvelle variable qui accidentellement à le même nom d'une variable déjà existante.
Mais tu peux matcher sur une variable existante grâce à l'opérateur
^
. Par exemple [^a, b] = [1, 2]
ne match que si la variable a
vaut déjà 1
.En Erlang tu ne peux pas rebind une variable, donc l'opérateur
^
n'existe pas car inutile.Sinon en Haskell par exemple c'est moins flexible mais en contrepartie tu peux matcher sur le système de types, donc tout aussi puissant (même plus).
Sinon pour tes langages tu compiles avec quoi ?
Citation :Et au fait, j'ai regardé Kraft, c'était bien sympa comme idée ! Je suis sûr qu'en le généralisant, on peut en faire un nouveau paradigme de programmation !
Non bah au final on a juste du pattern matching sur des types/quantités, quelques opérations mathématique et un switch/case. Ce n'est pas un langage complet. Si je devais le refaire aujourd'hui une paire de macros Elixir suffirait.