### 9.6.1 Définir une fonction ayant un nombre variable d’arguments : `args`

`args` ou `args(NULL)` renvoie la liste des arguments d’une fonction sous forme d’une liste : l’élément d’indice `0` est la fonction, les suivants sont les arguments passés à la fonction. Cela permet de travailler avec des fonctions ayant un nombre d’arguments non fixé a l’avance.
Remarque on ne peut pas mettre `args()` mais `args` ou `args(NULL)` (`NULL` est obligatoire) on peut aussi utiliser `(args)[0]` pour désigner la fonction, `(args)[1]` pour désigner le nom du premier argument... mais il ne faut pas oublier les parenthèses autour de `args`!
On tape :

`testargs():={ local y; y:=args; return y[1];}`
`testargs(12,5)`

On obtient :

`12`

On tape :

    somme():={
     local s,a;
     a:=args;
     s:=0;
     for (k:=1;k<size(a);k++){
     s:=s+a[k];
     }
     return s;
     }

puis :

`somme(1,2,3,4)`

On obtient :

`10`