Précédent Index Suivant

Écriture Scheme d'une application

 

 
Caractéristiques des applications en Scheme:  
Exemples:  
(+ 3 a)  
On peut imbriquer les applications:  
(+ (/ a c) (* 5 (sin (* b d))))  

 
Remarque: les fonctions peuvent alors avoir un nombre quelconque d'arguments. Par exemple:
 
(+ (* 3 x x) (* 5 x) 8)  

 
On peut écrire les expressions sur plusieurs lignes, ce qui améliore la lisibilité:
 
(+ (* 3 x x)
   (* 5 x)
   8) 
 

 
Attention, ne pas confondre l'entier relatif -3 avec l'expression (- 0 3) ou l'expression (- 3), qui ont la même valeur, et avec l'expression (- 3 0), qui vaut 3 et (-3) (sans espace entre le tiret et le 3) qui donne une erreur, -3 n'étant pas une fonction.
 
(- 0 3) -> -3
 
(- 3) -> -3
 
(- 3 0) -> 3
 
(-3) -> ERREUR  

 
Terminologie  
Dans une application, le premier élément est la fonction (et, comme nous le verrons plus tard, c'est elle-même une expression) que l'on applique à des arguments (qui sont eux-mêmes des expressions). Par exemple, dans l'expression
 
(+ (* 3 7 7) (* 5 7) 8)  
 

 
Grammaire  
On définit comment doit être écrite une application en utilisant une règle de grammaire:  
<application> -> (<fonction><argument>*)
   
 

 
Dans une telle règle de grammaire:  
Cette règle de grammaire dit qu'une application est constituée par une parenthèse ouvrante suivie d'une fonction puis d'un nombre quelconque, éventuellement 0, (c'est le sens de l'étoile) d'arguments et enfin d'une parenthèse fermante.
 
En fait, les arguments sont des expressions quelconques (c'est ce qui permet, entre autres, de pouvoir imbriquer les applications) et il en est de même pour les fonctions:
 
<argument> -> <expression>
   

<fonction> -> <expression>
   
 

 
Notions de syntaxe et de sémantique  
Dans le paragraphe précédent, nous avons défini comment doit être écrite une application pour qu'elle puisse être « comprise » par l'interprète Scheme. On dit que l'on a décrit la syntaxe du langage.
 
Il faut également savoir ce que représente une telle application, autrement dit quelle est sa valeur. On dit que l'on définit la sémantique du langage. En effet, la valeur de l'application calculée par l'interprète doit correspondre au sens que l'humain, qui lit ou écrit le source du programme, donne à cette application.
 
Dans ce cours, nous donnerons trois formes de sémantiques:  
Remarque: la sémantique formelle que nous donnerons par la suite est suffisante pour décrire le sens des expressions Scheme que nous écrirons en DEUG. Elle n'est pas assez puissante pour décrire le sens de n'importe quelle expression Scheme.
 
 
Évaluation d'une application  
Pour évaluer une application, on évalue chacun de ses arguments (ce qui nous donne des valeurs) et on applique la fonction à ces valeurs. Par exemple, pour évaluer l'application
 
(+ (* 3 7 7) (* 5 7) 8)  

 
1 - on évalue les arguments:
 
    
(* 3 7 7)  -> 147
    
(* 5 7)  -> 35 
    
8  -> 8 

 

 
2 - on applique la fonction + aux arguments 147, 35 et 8:
 
    (+ (* 3 7 7) (* 5 7) 8) -> 190  

 
On peut visualiser ce processus de calcul en utilisant DrScheme et en faisant évaluer l'expression en mode « pas à pas ».



Auteur(s): titou@ufr-info-p6.jussieu.fr.Mainteneur de la page: titou@ufr-info-p6.jussieu.fr.
 

Précédent Index Suivant