Instruction return

From: Pascal Zimmer (zimmer@easynet.fr)
Date: Sat May 31 1997 - 19:30:20 MET DST


Date: Sat, 31 May 1997 10:30:20 -0700
From: Pascal Zimmer <zimmer@easynet.fr>
To: caml-list@inria.fr
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 ?]



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:11 MET