TP2 : LE TYPE ENTIER

On désire implémenter en LISP les fonctions de manipulation des entiers naturels.

En LISP, on peut représenter l'entier 0 par la liste vide
et tout autre entier peut être représenté par une liste contenant pour premier élément s et pour reste un autre entier (le s signifiant ``successeur de'')

Ainsi :

Écrivez les fonctions suivantes

1.
nul? qui renvoie vrai si son argument est l'entier nul
>(nul? '(s s))
nil
2.
entier? qui renvoie vrai si son argument est un entier
>(entier? '(s s s s))
t
>(entier? 'a)
nil
3.
suc qui renvoie le successeur d'un entier
>(suc '(s s))
(s s s)
4.
pred qui renvoie le prédecesseur d'un entier non nul
> (pred '(s s))
(s)
5.
plus qui renvoie l'entier résultant de l'addition de deux entiers
> (plus '(s s) '(s s s s))
(s s s s s s)
6.
inf? qui renvoie vrai si le premier argument est un entier inférieur ou égal au second argument
> (inf? '(s s) '(s s s s))
t
7.
mult qui renvoie le produit
> (mult '(s s) '(s s s s))
(s s s s s s s s)
8.
puissance qui renvoie l'entier élevé à la puissance
> (puissance '(s s) '(s s s))
(s s s s s s s s)
9.
traduc qui traduit un entier en nombre
> (traduc '(s s s s))
4
10.
ductrad qui fait la traduction inverse
> (ductrad 4)
(s s s s)


Florence Bannay - Béatrice Duval
23-10-2000