### 8.4.4 Fonction testant le type de son argument: `type`

`type` est une fonction qui a un argument et qui renvoie le type de cet argument par exemple :
`DOM_FLOAT,DOM_INT,DOM_COMPLEX,..,DOM_IDENT,DOM_LIST,
DOM_SYMBOLIC,DOM_RAT,..DOM_SYMBOLIC,DOM_STRING`.
Il y a 20 types différents qui sont représentés par un entier entre 1 et 20.
`type` permet de tester une erreur d’entrée.
On tape :

`type(3.14)`

On obtient :

`DOM_FLOAT`

On tape :

`type(3.14)+0`

On obtient :

`1`

On tape :

`type(3)`

On obtient :

`DOM_INT`

On tape :

`type(3)+0`

On obtient :

`2`

On tape :

`type(3% 5)`

On obtient :

`15`

Remarque : utilisation de type pour les graphes
voir aussi 3
Si le graphe dépend d’une fonction utilisateur, il faut que la fonction soit définie même lorsque le(s) paramètre(s) a (ont) une valeur formelle, ce qui peut se faire en testant le type du paramètre, comme dans l’exemple suivant, f est définie en testant du type du paramètre par :

    f(x):= {
      if (type(x)==DOM_IDENT) return 'f'(x);
      while(x>0){ x--; }
      return x;
    }:;

Ainsi `f(x)` renvoie `f(x)` et `f(3.1)` renvoie `-0.9`.
ou bien

    g(x):= {
      if (type(x)!=DOM_LIST) return 'g'(x);
      if (type(x)==DOM_IDENT) return 'g'(x);
      while(x[0]>0){x[0]:=x[0]-1; }
      return x;
    }:;

Ainsi `g(x)` renvoie `g(x)`, `g([x,y,z])` renvoie `g([x,y,z])` et `g([1.1,2,3])` renvoie `[-0.9,2,3]`.
Par exemple si `G:=plotfunc(g(x)`, le test permet d’utiliser le graphe `G` de `g` dans des commandes comme `translation(1+i,G)`...