From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id q1HIXlor022129 for ; Fri, 17 Feb 2012 19:33:47 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsABADGdPk/RVde2kGdsb2JhbABEhRSjIAGId2sIIgEBAQEJCQ0HFAQjgXUBAQEDARICDwQZARsdAQMBCwYDAgs3AgICHwEBEQEFARwGEyKHXgmbRwqLJkyCcoUPP4hzAgULiFODegcBgzIaFwMIAwIBCAYOBYIZgRYEiE6MaYsTgxY9hCA X-IronPort-AV: E=Sophos;i="4.73,439,1325458800"; d="scan'208";a="131861027" Received: from mail-ey0-f182.google.com ([209.85.215.182]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 17 Feb 2012 19:33:42 +0100 Received: by eaan10 with SMTP id n10so1732368eaa.27 for ; Fri, 17 Feb 2012 10:33:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=oz6odgSy2lfChFB7Ftvizyq4CAmVGcBEo6MY4nBL+5M=; b=vCjp8xxtAKHvHqFJXODl4KZKhe7I0c6sS+/6iP+8NnLkhOcY0oRuuKejt3dQqYYTT7 pJ/1BantTlpn3E/hfb06C1EncXGyhDECcOXMTb/lEhFSL/HLoWvwOsvnE+dnnC0BqitF Qqhxf7w+4pd/+b+4LQDJLJ5rLgH2o56VjkKPs= MIME-Version: 1.0 Received: by 10.213.22.84 with SMTP id m20mr1376707ebb.38.1329503621930; Fri, 17 Feb 2012 10:33:41 -0800 (PST) Received: by 10.213.14.140 with HTTP; Fri, 17 Feb 2012 10:33:41 -0800 (PST) In-Reply-To: References: Date: Fri, 17 Feb 2012 13:33:41 -0500 Message-ID: From: Edgar Friendly To: Pierre-Alexandre Voye Cc: caml-list Content-Type: multipart/alternative; boundary=0015174a05821cde8304b92d2fb9 Subject: Re: [Caml-list] How an exception could be an argument --0015174a05821cde8304b92d2fb9 Content-Type: text/plain; charset=UTF-8 Here is an example of giving an exception as an argument to a function: let run_or ~cmd ~err = if Sys.command cmd <> 0 then raise err and an example usage: let config_fail = Failure ("Could not configure " ^ p.id) in run_or ~cmd:("sh configure" ^ config_opt) ~err:config_fail; The problem with your code seems to be that you're passing in a result, so the exception is being raised outside your try...with block. OCaml's eager evaluation means that you'll probably have to pass in a function and an argument (or just a unit function), meaning that your <|||> will be much uglier: let (<|||>) (f,x) (g,y) = try f x with Nothing -> g y ((fun () -> raise Nothing), ()) <|||> ((fun str -> str), "ii") E. On Fri, Feb 17, 2012 at 1:16 PM, Pierre-Alexandre Voye wrote: > Hello, I'm trying to implement a scala concept "partial application" in > which one can chains pattern matching function. If the first failed, the > second is tried. > It seems it is impossible to give an exception as argument to a function. > > > > exception Nothing;; > > let (<|||>) a b = try a > with > > | Nothing -> (try b > with > > | Nothing -> raise > Nothing);; > > val ( <|||> ) : 'a -> 'a -> 'a = > > > > (raise Nothing) <|||> > "jj";; > > Exception: Nothing. > > > But if I try : > try (raise Nothing) > with > > | Nothing -> (try > "jj"with > > | Nothing -> raise > Nothing);; > > - : string = "jj" > > Is there a workaround ? > > > Regards, > P-A > -- > --------------------- > https://twitter.com/#!/ontologiae/ > http://linuxfr.org/users/montaigne > > --0015174a05821cde8304b92d2fb9 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 SGVyZSBpcyBhbiBleGFtcGxlIG9mIGdpdmluZyBhbiBleGNlcHRpb24gYXMg YW4gYXJndW1lbnQgdG8gYSBmdW5jdGlvbjo8YnI+PGJyPmxldCBydW5fb3Ig fmNtZCB+ZXJyID0gaWYgU3lzLmNvbW1hbmQgY21kICZsdDsmZ3Q7IDAgdGhl biByYWlzZSBlcnI8YnI+PGJyPmFuZCBhbiBleGFtcGxlIHVzYWdlOjxicj48 YnI+bGV0IGNvbmZpZ19mYWlsID0gRmFpbHVyZSAoJnF1b3Q7Q291bGQgbm90 IGNvbmZpZ3VyZSAmcXVvdDsgXiA8YSBocmVmPSJodHRwOi8vcC5pZCI+cC5p ZDwvYT4pwqAgaW48YnI+CnJ1bl9vciB+Y21kOigmcXVvdDtzaCBjb25maWd1 cmUmcXVvdDsgXiBjb25maWdfb3B0KSB+ZXJyOmNvbmZpZ19mYWlsOzxicj48 YnI+VGhlIHByb2JsZW0gd2l0aCB5b3VyIGNvZGUgc2VlbXMgdG8gYmUgdGhh dCB5b3UmIzM5O3JlIHBhc3NpbmcgaW4gYSByZXN1bHQsIHNvIHRoZSBleGNl cHRpb24gaXMgYmVpbmcgcmFpc2VkIG91dHNpZGUgeW91ciB0cnkuLi53aXRo IGJsb2NrLsKgIE9DYW1sJiMzOTtzIGVhZ2VyIGV2YWx1YXRpb24gbWVhbnMg dGhhdCB5b3UmIzM5O2xsIHByb2JhYmx5IGhhdmUgdG8gcGFzcyBpbiBhIGZ1 bmN0aW9uIGFuZCBhbiBhcmd1bWVudCAob3IganVzdCBhIHVuaXQgZnVuY3Rp b24pLCBtZWFuaW5nIHRoYXQgeW91ciAmbHQ7fHx8Jmd0OyB3aWxsIGJlIG11 Y2ggdWdsaWVyOjxicj4KPGJyPmxldCAoJmx0O3x8fCZndDspIChmLHgpIChn LHkpID0gdHJ5IGYgeCB3aXRoIE5vdGhpbmcgLSZndDsgZyB5PGJyPjxicj4o KGZ1biAoKSAtJmd0OyByYWlzZSBOb3RoaW5nKSwgKCkpICZsdDt8fHwmZ3Q7 ICgoZnVuIHN0ciAtJmd0OyBzdHIpLCAmcXVvdDtpaSZxdW90Oyk8YnI+PGJy PkUuPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gRnJpLCBG ZWIgMTcsIDIwMTIgYXQgMToxNiBQTSwgUGllcnJlLUFsZXhhbmRyZSBWb3ll IDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOm9udG9sb2dp YWVAZ21haWwuY29tIj5vbnRvbG9naWFlQGdtYWlsLmNvbTwvYT4mZ3Q7PC9z cGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90 ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAj Y2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPkhlbGxvLCBJJiMzOTttIHRy eWluZyB0byBpbXBsZW1lbnQgYSBzY2FsYSBjb25jZXB0ICZxdW90O3BhcnRp YWwgYXBwbGljYXRpb24mcXVvdDsgaW4gd2hpY2ggb25lIGNhbiBjaGFpbnMg cGF0dGVybiBtYXRjaGluZyBmdW5jdGlvbi4gSWYgdGhlIGZpcnN0IGZhaWxl ZCwgdGhlIHNlY29uZCBpcyB0cmllZC48YnI+Ckl0IHNlZW1zIGl0IGlzIGlt cG9zc2libGUgdG8gZ2l2ZSBhbiBleGNlcHRpb24gYXMgYXJndW1lbnQgdG8g YSBmdW5jdGlvbi48YnI+Cgo8YnI+PGJyPjxicj5leGNlcHRpb24gTm90aGlu Zzs7PGJyPjxicj5sZXQgKCZsdDt8fHwmZ3Q7KSBhIGIgPSB0cnkgYSB3aXRo wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8YnI+ CgoKwqAgfCBOb3RoaW5nIC0mZ3Q7wqAgKHRyeSBiIHdpdGjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxicj4KCgrC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBOb3RoaW5n IC0mZ3Q7IHJhaXNlIE5vdGhpbmcpOzvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxicj4KCgp2YWwgKCAmbHQ7 fHx8Jmd0OyApIDogJiMzOTthIC0mZ3Q7ICYjMzk7YSAtJmd0OyAmIzM5O2Eg PSAmbHQ7ZnVuJmd0O8KgIDxiciBjbGVhcj0iYWxsIj48YnI+PC9ibG9ja3F1 b3RlPjxkaXY+wqA8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVv dGUiIHN0eWxlPSJtYXJnaW46MHB0IDBwdCAwcHQgMC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFl eCI+Cjxicj4ocmFpc2UgTm90aGluZykgJmx0O3x8fCZndDsgJnF1b3Q7amom cXVvdDs7O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgPGJyPgoKCkV4Y2VwdGlvbjogTm90aGluZy7CoCA8YnI+PGJyPjxicj5C dXQgaWYgSSB0cnkgOjxicj50cnkgKHJhaXNlIE5vdGhpbmcpwqAgd2l0aMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg PGJyPgoKCsKgIHwgTm90aGluZyAtJmd0O8KgICh0cnkgJnF1b3Q7amomcXVv dDt3aXRowqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDxicj4KCgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCBOb3RoaW5nIC0mZ3Q7IHJhaXNlIE5vdGhpbmcpOzvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxicj4K CgotIDogc3RyaW5nID0gJnF1b3Q7amomcXVvdDvCoCA8YnI+PGJyPklzIHRo ZXJlIGEgd29ya2Fyb3VuZCA/PGJyPgo8YnI+PGJyPlJlZ2FyZHMsPGJyPlAt QTxzcGFuIGNsYXNzPSJIT0VuWmIiPjxmb250IGNvbG9yPSIjODg4ODg4Ij48 YnI+LS0gPGJyPi0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj48YSBocmVmPSJo dHRwczovL3R3aXR0ZXIuY29tLyMlMjEvb250b2xvZ2lhZS8iIHRhcmdldD0i X2JsYW5rIj5odHRwczovL3R3aXR0ZXIuY29tLyMhL29udG9sb2dpYWUvPC9h Pjxicj48YSBocmVmPSJodHRwOi8vbGludXhmci5vcmcvdXNlcnMvbW9udGFp Z25lIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xpbnV4ZnIub3JnL3VzZXJz L21vbnRhaWduZTwvYT48YnI+CgoKPGJyPgo8L2ZvbnQ+PC9zcGFuPjwvYmxv Y2txdW90ZT48L2Rpdj48YnI+Cg== --0015174a05821cde8304b92d2fb9--