From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 15602BBC1 for ; Fri, 11 Apr 2008 12:04:28 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al4DALXU/kfAXQIndGdsb2JhbACRTwEMliqEAw X-IronPort-AV: E=Sophos;i="4.25,640,1199660400"; d="scan'208";a="24880756" Received: from concorde.inria.fr ([192.93.2.39]) by mail4-smtp-sop.national.inria.fr with ESMTP; 11 Apr 2008 12:04:27 +0200 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id m3BA4RnP011242 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 11 Apr 2008 12:04:27 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvwBAOfU/kfRVciuc2dsb2JhbACRTwEMAwQFCRSVeIQD X-IronPort-AV: E=Sophos;i="4.25,640,1199660400"; d="scan'208";a="10747431" Received: from wf-out-1314.google.com ([209.85.200.174]) by mail1-smtp-roc.national.inria.fr with ESMTP; 11 Apr 2008 12:04:26 +0200 Received: by wf-out-1314.google.com with SMTP id 26so572352wfd.0 for ; Fri, 11 Apr 2008 03:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=+RB4eprq1w7aUn3uZQFO8iqsfQgY66T5hPkjG494eys=; b=cyV46l6hGH1cJjkoQEic/cO1Mw+hPFJZO8D/UKNj7+bGYMUWljQr3DDWtjsxlfnD2PoTiSxwkp0EhzOCOS3EjYvGvWAMW9/gvImwYV9ByU6X4qFkV5CDGD3Vb5mR9y6qpG9R2xjx09ikxnF8Qf0oQclb/CfMQ+pWa8G3NDDnOuw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=TO0Z+SLk3Q0uApvIfYnBO9ReOfqvOMsoATjEIScKCG+PGLOQ7ELoi/G/a2/FxRbioaQyeXuF5uyK7JOFDODjZ9u+DW0u30TlMg22HQpby3s9gTBCtBn4oTBIwYeFJDQHx/bZvmcC/KoTrCQBlwPmXQ+cB3JSxnr7HS0a9T6E4yA= Received: by 10.142.217.19 with SMTP id p19mr782546wfg.243.1207908265876; Fri, 11 Apr 2008 03:04:25 -0700 (PDT) Received: by 10.142.191.7 with HTTP; Fri, 11 Apr 2008 03:04:25 -0700 (PDT) Message-ID: <5b0248170804110304q2a968b94uf0402cd3a54ad0df@mail.gmail.com> Date: Fri, 11 Apr 2008 19:04:25 +0900 From: "Sanghyeon Seo" To: caml-list@inria.fr Subject: Static exception in lambda code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Miltered: at concorde with ID 47FF37AB.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; lambda:01 maranget:01 lambda:01 bytecomp:01 simplif:01 seq:01 seq:01 semantics:01 seo:98 seo:98 luc:01 exception:01 exception:01 exits:02 exits:02 Luc Maranget suggested that static exception mechanism in lambda code, namely Lstaticcatch and Lstaticraise, could be used to implement break and continue. However, this doesn't work right now. In bytecomp/simplif.ml, simplify_exits simplify (catch (seq (exit 1) (assign a b)) with (1) unit) to (seq unit (assign a b)) which is not appropriate. The comment says: "simplify catch body with (i ...) handler ... if (exit i ...) occurs exactly once in body, substitute it with handler". simplify_exits suppress catch if no exit occurs in body, which is nice, but this simplification is dangerous if one is to use this mechanism to implement break and continue. So, which is the case? 1. The simplification is not safe, so it should be removed. 2. The simplification is consistent with intended semantics of static catch/raise, so static catch/raise is not directly useful to implement break/continue or for that matter, return. -- Seo Sanghyeon