Version française
Home     About     Download     Resources     Contact us    
Browse thread
Instruction return
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Pascal Zimmer <zimmer@e...>
Subject: Instruction return
Serait-il possible d'ajouter une instruction return au langage CAML afin 
de pouvoir sortir directement d'une boucle, comme c'est le cas en C ? Je 
pense qu'une telle instruction ameliorerait beaucoup la lisibilite du 
code.

Par exemple, cela permettrait de retourner la valeur d'une fonction au 
cours d'une boucle for, alors que pour l'instant on doit utiliser une 
boucle while avec un compteur sous forme de pointeur.

Ainsi, une fonction classique de recherche d'une valeur x dans un tableau 
non trie v s'ecrit:

let rech x v =
 let n = vect_length v in
 let i = ref 0 in
 while !i < n & v.(!i) <> x do i := !i + 1 done;
 not (!i = n);;

Avec une instruction return, on pourrait l'ecrire ainsi:

let rech x v =
 let n = vect_length v in
 for i=0 to n-1 do
  if v.(i) = x then return true
 done; false;;

Cette derniere forme sans pointeur pour le compteur i est tout de meme 
plus claire !

Bien entendu, le typeur devra verifier que le type renvoye par return est 
le meme que celui renvoye par la derniere instruction de la fonction.
Une telle possibilite (renvoi par return ou par la derniere instruction) 
est par exemple utilisee par le langage de programmation de MAPLE, sauf 
qu'il n'y a aucun controle de type.

J'aimerais donc savoir si une telle instruction est possible ou s'il y a 
incompatibilite avec le reste du langage.

[English: Is it possible to add a 'return' instruction to the CAML 
language, like in C ?]