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 XAA28582 for caml-redistribution; Thu, 2 Jul 1998 23:26:44 +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 KAA22391 for ; Thu, 2 Jul 1998 10:55:35 +0200 (MET DST) Received: from macon.informatik.uni-tuebingen.de (macon2.Informatik.Uni-Tuebingen.De [134.2.13.2]) by nez-perce.inria.fr (8.8.7/8.8.7) with ESMTP id KAA08969 for ; Thu, 2 Jul 1998 10:55:33 +0200 (MET DST) Received: from brabantio.informatik.uni-tuebingen.de (brabantio.Informatik.Uni-Tuebingen.De [134.2.12.25]) by macon.informatik.uni-tuebingen.de (8.8.8/8.8.8) with ESMTP id KAA12868 for ; Thu, 2 Jul 1998 10:55:33 +0200 Received: (from sperber@localhost) by brabantio.informatik.uni-tuebingen.de (AIX4.2/UCB 8.7/8.7) id KAA22338; Thu, 2 Jul 1998 10:55:31 +0200 (MST) Sender: weis To: caml-list@inria.fr Subject: Compiler internals question Mime-Version: 1.0 (generated by tm-edit 1.3) Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable From: sperber@informatik.uni-tuebingen.de (Michael Sperber [Mr. Preprocessor]) Date: 02 Jul 1998 10:55:30 +0200 Message-ID: X-Mailer: Gnus v5.6.9/XEmacs 21.0 - "Toggenburg" [ Many thanks, Xavier, for your previous answer to my byterun question! ] Consider the following O'Caml fragment: type bla = A of int | B of int * int | C of int * int * int match f 5 with B(_, _) -> 17 The latter line is compiled into Lambda intermediate code as: (catch (let (match/51 (apply (global f/49g) 5)) (catch (switch match/51 case tag 1: (let (match/52 (field 0 match/51) match/53 (field 1 match/51)) 17))= with exit)) with (raise (makeblock 0 (global Match_failure/12g) [0: "" 0 28]))) Does the inner "catch" serve any purpose or is it redundant? -- = Cheers =8-} Mike Friede, V=F6lkerverst=E4ndigung und =FCberhaupt blabla