From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id QAA21452 for caml-redistribution; Mon, 2 Jun 1997 16:48:03 +0200 (MET DST) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id KAA09989 for ; Sat, 31 May 1997 10:41:26 +0200 (MET DST) Received: from easynet.fr (qmailr@[195.114.64.207]) by nez-perce.inria.fr (8.8.5/8.7.3) with SMTP id KAA23324 for ; Sat, 31 May 1997 10:41:17 +0200 (MET DST) Received: (qmail 23089 invoked from network); 31 May 1997 09:19:17 -0000 Received: from pop-strasbourg-130.easynet.fr (HELO LOCALNAME) (195.114.94.130) by mail.easynet.fr with SMTP; 31 May 1997 09:19:17 -0000 Message-ID: <3390602C.20BB@easynet.fr> Date: Sat, 31 May 1997 10:30:20 -0700 From: Pascal Zimmer X-Mailer: Mozilla 2.02E [fr] (Win16; I) MIME-Version: 1.0 To: caml-list@inria.fr Subject: Instruction return Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: weis 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 ?]