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=3.0 required=5.0 tests=DATE_IN_PAST_96_XX, HTML_MESSAGE,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 56CEABC69 for ; Mon, 28 May 2007 17:46:09 +0200 (CEST) Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.177]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4SFk8i0015199 for ; Mon, 28 May 2007 17:46:08 +0200 Received: by py-out-1112.google.com with SMTP id u52so430638pyb for ; Mon, 28 May 2007 08:46:07 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:date:from:to:subject:message-id:x-mailer:mime-version:content-type; b=CBbBmCAKST4k8oYM2uURuQnWongH51oyFQUQKuV4YADSNNzc216YJO6/qA/Tb0pwWnNpzP5KHDz+37hjxt9c6v5wT65i7QC4vYLQiicRbO16wn2ANbc3lPdVErxi8zYL3vjRJ3yV4coxTfQnYeW4Lh6PocAyiJ6/14eQKTUCtsI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:date:from:to:subject:message-id:x-mailer:mime-version:content-type; b=ZeKGEimA8wS9VRFDj18sdnJUMPREHaAmEXQ3YV0rvHiIoKQTXgHJ2l9nM2x47hOSqK8WmWUwhrv+SX/gxfIAPcru4IGdOj1mE+VwQdWsbYsVtlbBhivZG/cVXwsJZXSr51VNojzwQliHfgSTWAsFxTTH0d957HPDWNaggFr5Sfg= Received: by 10.35.98.3 with SMTP id a3mr8484211pym.1180367167798; Mon, 28 May 2007 08:46:07 -0700 (PDT) Received: from MICROSOF-928FD8 ( [218.19.2.191]) by mx.google.com with ESMTP id a2sm10941471pyi.2007.05.28.08.46.05; Mon, 28 May 2007 08:46:06 -0700 (PDT) Date: Sat, 28 May 2005 23:46:03 +0800 From: "jeremy" To: "caml-list" Subject: How can I have a string matched my custom type? Message-ID: <200505282346008070041@gmail.com> X-mailer: Foxmail 6, 01, 102, 12 [cn] Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=====003_Dragon110181167342_=====" X-j-chkmail-Score: MSGID : 465AF940.000 on discorde : j-chkmail score : XX : 0/20 2 0.000 -> 2 X-Miltered: at discorde with ID 465AF940.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; printf:01 expr:01 expr:01 endline:01 argv:01 printf:01 endline:01 argv:01 W8:98 W14:98 rec:01 rec:01 compile:01 compile:01 matched:01 X-Attachments: cset="gb2312" cset="gb2312" This is a multi-part message in MIME format. --=====003_Dragon110181167342_===== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 7bit hi list, I want to parse an expression string from the command line arguments, and have written some codes like below: open Printf type expr = Plus of expr * expr | Minus of expr * expr | Times of expr * expr | Divide of expr * expr | Value of string let rec to_string e = match e with Plus (left, right) -> "(" ^ (to_string left) ^ "+" ^ (to_string right) ^ ")" | Minus (left, right) -> "(" ^ (to_string left) ^ "-" ^ (to_string right) ^ ")" | Times (left, right) -> "(" ^ (to_string left) ^ "*" ^ (to_string right) ^ ")" | Divide (left, right) -> "(" ^ (to_string left) ^ "/" ^ (to_string right) ^ ")" | Value v -> v let _ = print_endline (to_string Sys.argv.(1)) when I compile it , It raise an error : This expression has type string but is here used with type expr How can I solve this problem? thx . --=====003_Dragon110181167342_===== Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: 7bit
hi list,
    I want to parse an expression string from the command line arguments, and have written some codes like below:
   
    open Printf
 
    type expr =     
          Plus        of expr * expr
        | Minus     of expr * expr
        | Times     of expr * expr           
        | Divide    of expr * expr
        | Value     of string
 
    let rec to_string e =
        match e with
              Plus      (left, right)   -> "(" ^ (to_string left) ^ "+" ^ (to_string right) ^ ")"
            | Minus     (left, right)   -> "(" ^ (to_string left) ^ "-" ^ (to_string right) ^ ")"
            | Times     (left, right)   -> "(" ^ (to_string left) ^ "*" ^ (to_string right) ^ ")"
            | Divide    (left, right)   -> "(" ^ (to_string left) ^ "/" ^ (to_string right) ^ ")"
            | Value     v               -> v
 
    let _ =
         print_endline (to_string Sys.argv.(1))
 
when I compile it  , It raise an error :
This expression has type string but is here used with type expr
 
How can I solve this problem?  thx .
--=====003_Dragon110181167342_=====-- 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 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id B7CCBBC6B for ; Mon, 28 May 2007 18:14:42 +0200 (CEST) Received: from ext.lri.fr (ext.lri.fr [129.175.15.4]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4SGEgKX002496 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 28 May 2007 18:14:42 +0200 Received: from smtp.lri.fr (serveur3-5 [129.175.3.5]) by ext.lri.fr (Postfix) with ESMTP id 22A9CDF215; Mon, 28 May 2007 18:14:42 +0200 (CEST) Received: from serveur9-10.lri.fr (serveur9-10 [129.175.9.10]) by smtp.lri.fr (Postfix) with ESMTP id 3B4A4CED98; Mon, 28 May 2007 18:14:42 +0200 (CEST) Received: from filliatr by serveur9-10.lri.fr with local (Exim 3.36 #1 (Debian)) id 1Hshrm-00010s-00; Mon, 28 May 2007 18:14:42 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18010.65522.31165.647915@serveur9-10.lri.fr> Date: Mon, 28 May 2007 18:14:42 +0200 From: Jean-Christophe Filliatre To: "jeremy" Cc: "caml-list" Subject: Re: [Caml-list] How can I have a string matched my custom type? In-Reply-To: <200505282346008070041@gmail.com> References: <200505282346008070041@gmail.com> X-Mailer: VM 7.19 under Emacs 21.4.1 X-Virus-Scanned: by amavisd-new at lri.fr X-Miltered: at concorde with ID 465AFFF2.001 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; filliatre:01 filliatr:01 lri:01 expr:01 expr:01 endline:01 argv:01 parser:01 recursive:01 parser:01 genlex:01 ocaml's:01 genlex:01 lexer:01 kwd:01 > I want to parse an expression string from the command line arguments, and have written some codes like below: > > type expr = > Plus of expr * expr > | Minus of expr * expr > | Times of expr * expr > | Divide of expr * expr > | Value of string > > let rec to_string e = > match e with > Plus (left, right) -> "(" ^ (to_string left) ^ "+" ^ (to_string right) ^ ")" > | Minus (left, right) -> "(" ^ (to_string left) ^ "-" ^ (to_string right) ^ ")" > | Times (left, right) -> "(" ^ (to_string left) ^ "*" ^ (to_string right) ^ ")" > | Divide (left, right) -> "(" ^ (to_string left) ^ "/" ^ (to_string right) ^ ")" > | Value v -> v > > let _ = > print_endline (to_string Sys.argv.(1)) As you say, you want to _parse_ an expression from a string, which means a function of type string->expr, but your code only contains a _pretty-printer_, that is the opposite operation, which has type expr->string. There are several ways to build such a parser. A simple way is to write a recursive descending parser using Genlex and Stream from ocaml's standard library, as follows: ====================================================================== open Genlex let lex = make_lexer ["+"; "-"; "*"; "/"; "("; ")"];; let rec expr s = let t = term s in match Stream.peek s with | Some (Kwd "+") -> Stream.junk s; Plus (t, expr s) | Some (Kwd "-") -> Stream.junk s; Minus (t, expr s) | _ -> t and term s = let f = factor s in match Stream.peek s with | Some (Kwd "*") -> Stream.junk s; Times (f, term s) | Some (Kwd "/") -> Stream.junk s; Divide (f, term s) | _ -> f | _ -> failwith "syntax error" and factor s = match Stream.peek s with | Some (Kwd "(") -> Stream.junk s; let e = expr s in begin match Stream.peek s with | Some (Kwd ")") -> Stream.junk s; e | _ -> failwith "syntax error" end | Some (Int n) -> Stream.junk s; Value (string_of_int n) | _ -> failwith "syntax error" let parse s = expr (lex (Stream.of_string s)) ====================================================================== then you can parse the string "(1+2)*3+4" as follows: ====================================================================== let e = parse "(1+2)*3+4" # val e : expr = Plus (Times (Plus (Value "1", Value "2"), Value "3"), Value "4") ====================================================================== Another more sophisticated (but more powerful) way is to use a tool like ocamlyacc or menhir. Hope this helps, -- Jean-Christophe 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=1.4 required=5.0 tests=HTML_MESSAGE,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 5ED01BC69 for ; Mon, 28 May 2007 19:54:42 +0200 (CEST) Received: from wa-out-1112.google.com (wa-out-1112.google.com [209.85.146.177]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4SHsf88009457 for ; Mon, 28 May 2007 19:54:41 +0200 Received: by wa-out-1112.google.com with SMTP id m28so680252wag for ; Mon, 28 May 2007 10:54:40 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=uIwqpiIFj1y1gr9ge5vxNuInjw2weCAil49mMNHVa7MEzILfQlUKElQUxv1PGT04kErgRycsyDWZOmbWmHaxHsibNh052Hoe5RUDtFur7ioDCInGpUMDcya1VYgN376eLO4pvnZcvot4INg7zg8y+tXgrczTcCHl45fk9dxGqVE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=nzzDezmWS9bDdNUhkXx94jbW2CdgmZN9E5GtQVH7tvkXrwiQEX1DuDumIPxxXCEV98hWALy1LgKeEGJBngvkm9I8z2bhs5j93n9+7NPWnVW5ktXIvUsNQWbvKOg8kK00C+cN32j2rkvcuadxNTWwWFDxtKyjubIl/O8QTUebG7s= Received: by 10.114.120.1 with SMTP id s1mr3017413wac.1180374880523; Mon, 28 May 2007 10:54:40 -0700 (PDT) Received: by 10.114.179.4 with HTTP; Mon, 28 May 2007 10:54:40 -0700 (PDT) Message-ID: <765e2be00705281054h4f77a584y1f12f15c7bd0d284@mail.gmail.com> Date: Mon, 28 May 2007 19:54:40 +0200 From: Mehdi To: "Jean-Christophe Filliatre" Subject: Re: [Caml-list] How can I have a string matched my custom type? Cc: jeremy , caml-list In-Reply-To: <18010.65522.31165.647915@serveur9-10.lri.fr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_12589_25904211.1180374880478" References: <200505282346008070041@gmail.com> <18010.65522.31165.647915@serveur9-10.lri.fr> X-j-chkmail-Score: MSGID : 465B1761.000 on discorde : j-chkmail score : XXX : 0/20 3 0.000 -> 3 X-Miltered: at discorde with ID 465B1761.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; val:01 expr:01 genlex:01 failwith:01 syntax:01 val:01 expr:01 genlex:01 failwith:01 W8:98 W10:98 W8:98 W10:98 caml-list:01 matched:01 X-Attachments: cset="UTF-8" cset="UTF-8" ------=_Part_12589_25904211.1180374880478 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline VGhlcmUgYSBsaXR0bGUgcHJvYmxlbSB3aGVuIHlvdSB0cnkgdG8gY29tcHV0ZQoKPiBsZXQgZSA9 IHBhcnNlICIxKjMtMiI7OwoKCkkgZ2V0IDoKCj4gIHZhbCBlIDogZXhwciA9IFRpbWVzIChWYWx1 ZSAiMSIsIFZhbHVlICIzIikKPgoKSSBkaWRuJ3QgdW5kZXJzdGFuZCB3aHkgaXQgZm9yZ2V0cyB0 byAibWludXMgMiIgYXQgdGhlIGVuZC4gQXMgSSdtIG5vdApmYW1pbGlhciB3aXRoIEdlbmxleCwg Y2FuIGFueW9uZSB0ZWxsIG1lIHdoeSBpc24ndCB3b3JraW5nID8KQW0gSSBtaXNzaW5nIHNvbWVz dGhpbmcgPwoKSSBhbHNvIGRpZG4ndCB1bmRlcnN0YW5kIHdoeSB0aGVyZSBpcyB0aGlzIGluICJ0 ZXJtIiA6Cgo+ICAgIHwgXyAtPiBmCj4gICAgfCBfIC0+IGZhaWx3aXRoICJzeW50YXggZXJyb3Ii CgoKCi0tIApNZWhkaSBEb2dndXkK2YXZh9iv2Yog2KfZhNiv2qTZigo= ------=_Part_12589_25904211.1180374880478 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline VGhlcmUgYSBsaXR0bGUgcHJvYmxlbSB3aGVuIHlvdSB0cnkgdG8gY29tcHV0ZSA8YnI+CjxibG9j a3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsg bWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7IiBjbGFzcz0iZ21h aWxfcXVvdGUiPmxldCBlID0gcGFyc2UgJnF1b3Q7MSozLTImcXVvdDs7OzwvYmxvY2txdW90ZT4K PGRpdj48YnI+CkkgZ2V0IDo8YnI+CjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDogMXB4 IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFk ZGluZy1sZWZ0OiAxZXg7IiBjbGFzcz0iZ21haWxfcXVvdGUiPiZuYnNwO3ZhbCBlIDogZXhwciA9 IFRpbWVzIChWYWx1ZSAmcXVvdDsxJnF1b3Q7LCBWYWx1ZSAmcXVvdDszJnF1b3Q7KTxicj4KPC9i bG9ja3F1b3RlPgo8L2Rpdj48YnI+SSBkaWRuJiMzOTt0IHVuZGVyc3RhbmQgd2h5IGl0IGZvcmdl dHMgdG8gJnF1b3Q7bWludXMgMiZxdW90OyBhdCB0aGUgZW5kLiBBcyBJJiMzOTttCm5vdCBmYW1p bGlhciB3aXRoIEdlbmxleCwgY2FuIGFueW9uZSB0ZWxsIG1lIHdoeSBpc24mIzM5O3Qgd29ya2lu ZyA/PGJyPgpBbSBJIG1pc3Npbmcgc29tZXN0aGluZyA/PGJyPjxicj5JIGFsc28gZGlkbiYjMzk7 dCB1bmRlcnN0YW5kIHdoeSB0aGVyZSBpcyB0aGlzIGluICZxdW90O3Rlcm0mcXVvdDsgOjxicj48 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIw NCk7IG1hcmdpbjogMHB0IDBwdCAwcHQgMC44ZXg7IHBhZGRpbmctbGVmdDogMWV4OyIgY2xhc3M9 ImdtYWlsX3F1b3RlIj4KICZuYnNwOyZuYnNwOyB8IF8gLSZndDsgZjxicj4gJm5ic3A7ICZuYnNw O3wgXyAtJmd0OyBmYWlsd2l0aCAmcXVvdDtzeW50YXggZXJyb3ImcXVvdDs8L2Jsb2NrcXVvdGU+ PGRpdj4mbmJzcDs8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+LS0gPGJyPk1laGRpIERvZ2d1eTxi cj7ZhdmH2K/ZiiDYp9mE2K/apNmKPGJyPgo= ------=_Part_12589_25904211.1180374880478-- 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 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id BF000BC6B for ; Mon, 28 May 2007 20:07:11 +0200 (CEST) Received: from ext.lri.fr (ext.lri.fr [129.175.15.4]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4SI7BCp012819 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 28 May 2007 20:07:11 +0200 Received: from smtp.lri.fr (serveur3-5 [129.175.3.5]) by ext.lri.fr (Postfix) with ESMTP id 2FA60DF219; Mon, 28 May 2007 20:07:11 +0200 (CEST) Received: from serveur9-10.lri.fr (serveur9-10 [129.175.9.10]) by smtp.lri.fr (Postfix) with ESMTP id 6D81ACED98; Mon, 28 May 2007 20:07:10 +0200 (CEST) Received: from filliatr by serveur9-10.lri.fr with local (Exim 3.36 #1 (Debian)) id 1Hsjcd-0001BH-00; Mon, 28 May 2007 20:07:11 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18011.6735.85307.153103@serveur9-10.lri.fr> Date: Mon, 28 May 2007 20:07:11 +0200 From: Jean-Christophe Filliatre To: Mehdi Cc: jeremy , caml-list Subject: Re: [Caml-list] How can I have a string matched my custom type? In-Reply-To: <765e2be00705281054h4f77a584y1f12f15c7bd0d284@mail.gmail.com> References: <200505282346008070041@gmail.com> <18010.65522.31165.647915@serveur9-10.lri.fr> <765e2be00705281054h4f77a584y1f12f15c7bd0d284@mail.gmail.com> X-Mailer: VM 7.19 under Emacs 21.4.1 X-Virus-Scanned: by amavisd-new at lri.fr X-Miltered: at discorde with ID 465B1A4F.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; filliatre:01 filliatr:01 lri:01 val:01 expr:01 genlex:01 expr:01 failwith:01 syntax:01 wrote:01 integer:01 caml-list:01 matched:01 writes:01 parse:02 Mehdi writes: > There a little problem when you try to compute > > > let e = parse "1*3-2";; > > > I get : > > > val e : expr = Times (Value "1", Value "3") This is a Genlex limitation. "-2" is recognized as an integer constant. Thus you need to add extra space: ====================================================================== # parse "1*3 - 2";; - : expr = Minus (Times (Value "1", Value "3"), Value "2") ====================================================================== > I also didn't understand why there is this in "term" : > > > | _ -> f > > | _ -> failwith "syntax error" Simply because I wrote this code in a rush :-) Forget about the last line. -- Jean-Christophe 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=1.0 required=5.0 tests=AWL,HTML_MESSAGE,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 3A527BC69 for ; Mon, 28 May 2007 20:23:45 +0200 (CEST) Received: from wa-out-1112.google.com (wa-out-1112.google.com [209.85.146.182]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4SINhPm017440 for ; Mon, 28 May 2007 20:23:44 +0200 Received: by wa-out-1112.google.com with SMTP id m28so682647wag for ; Mon, 28 May 2007 11:23:43 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=fFCTx9J023eoQt+DsMgfk62VZnSx9dNg1jArCRPCBimwc56BJ0um3529MQsEiHDuBNO2fwuly5oZRlQ7RZtMoiVwbJqbbLARmO9JpHOQh2JeqnDKSwvVwwrDio4GsCeFjRJT3Fq/9kmf3GbPuApPG6t0gIT7LRl71RuNQ0nuAXQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=phJ3D8nWo+uqaBl/kVIXfQk3wzNlyQ/zS/ogXzMVma6zVZxde7CkeoeSnPKlQWB20ob6L+UA0psxmev0SNVfF3jWwunRw1eR7tbayzqJKvc03MmgEGJ3Gp7Pm4AHOF/0gcVC22w7c4EJxI8nG9KfbbRr25avSCxYvgfFF8spfto= Received: by 10.114.155.1 with SMTP id c1mr3040510wae.1180376623208; Mon, 28 May 2007 11:23:43 -0700 (PDT) Received: by 10.114.179.4 with HTTP; Mon, 28 May 2007 11:23:43 -0700 (PDT) Message-ID: <765e2be00705281123u5f90fd5o6d935952c88d8cc2@mail.gmail.com> Date: Mon, 28 May 2007 20:23:43 +0200 From: Mehdi To: "Jean-Christophe Filliatre" Subject: Re: [Caml-list] How can I have a string matched my custom type? Cc: jeremy , caml-list In-Reply-To: <18011.6735.85307.153103@serveur9-10.lri.fr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_12813_8599392.1180376623111" References: <200505282346008070041@gmail.com> <18010.65522.31165.647915@serveur9-10.lri.fr> <765e2be00705281054h4f77a584y1f12f15c7bd0d284@mail.gmail.com> <18011.6735.85307.153103@serveur9-10.lri.fr> X-j-chkmail-Score: MSGID : 465B1E2F.001 on discorde : j-chkmail score : XXXX : 0/20 4 0.000 -> 4 X-Miltered: at discorde with ID 465B1E2F.001 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; val:01 expr:01 genlex:01 expr:01 failwith:01 syntax:01 val:01 genlex:01 failwith:01 W8:98 W10:98 W8:98 W10:98 wrote:01 wrote:01 X-Attachments: cset="UTF-8" cset="UTF-8" ------=_Part_12813_8599392.1180376623111 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Content-Disposition: inline PiA+IFRoZXJlIGEgbGl0dGxlIHByb2JsZW0gd2hlbiB5b3UgdHJ5IHRvIGNvbXB1dGUKPiA+Cj4g PiA+IGxldCBlID0gcGFyc2UgIjEqMy0yIjs7Cj4gPgo+ID4KPiA+IEkgZ2V0IDoKPiA+Cj4gPiA+ ICB2YWwgZSA6IGV4cHIgPSBUaW1lcyAoVmFsdWUgIjEiLCBWYWx1ZSAiMyIpCj4KPiBUaGlzIGlz IGEgR2VubGV4IGxpbWl0YXRpb24uICItMiIgaXMgcmVjb2duaXplZCBhcyBhbiBpbnRlZ2VyCj4g Y29uc3RhbnQuIFRodXMgeW91IG5lZWQgdG8gYWRkIGV4dHJhIHNwYWNlOgo+Cj4gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+ICMgcGFyc2UgIjEqMyAtIDIiOzsKPiAtIDogZXhwciA9IE1pbnVzIChUaW1lcyAoVmFs dWUgIjEiLCBWYWx1ZSAiMyIpLCBWYWx1ZSAiMiIpCj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCm9rCgo+IEkg YWxzbyBkaWRuJ3QgdW5kZXJzdGFuZCB3aHkgdGhlcmUgaXMgdGhpcyBpbiAidGVybSIgOgo+ID4K PiA+ID4gICAgfCBfIC0+IGYKPiA+ID4gICAgfCBfIC0+IGZhaWx3aXRoICJzeW50YXggZXJyb3Ii Cj4KPiBTaW1wbHkgYmVjYXVzZSBJIHdyb3RlIHRoaXMgY29kZSBpbiBhIHJ1c2ggOi0pIEZvcmdl dCBhYm91dCB0aGUgbGFzdAo+IGxpbmUuCgoKSSB0aG91Z2h0IGl0IHdhcyBzb21ldGhpbmcgb2Jz Y3VyIGJlaGluZCB0aGVzZSB0d28gbGluZXMgOikKdGhhbmtzIGZvciB0aGUgcXVpY2sgYW5zd2Vy CgotLSAKTWVoZGkgRG9nZ3V5CtmF2YfYr9mKINin2YTYr9qk2YoK ------=_Part_12813_8599392.1180376623111 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline PGJyPjxkaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0iYm9yZGVyLWxl ZnQ6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IG1hcmdpbjogMHB0IDBwdCAwcHQgMC44 ZXg7IHBhZGRpbmctbGVmdDogMWV4OyI+Jmd0OyBUaGVyZSBhIGxpdHRsZSBwcm9ibGVtIHdoZW4g eW91IHRyeSB0byBjb21wdXRlPGJyPiAmZ3Q7PGJyPiAmZ3Q7ICZndDsgbGV0IGUgPSBwYXJzZSAm cXVvdDsxKjMtMiZxdW90Ozs7Cjxicj4gJmd0Ozxicj4gJmd0Ozxicj4gJmd0OyBJIGdldCA6PGJy PiAmZ3Q7PGJyPiAmZ3Q7ICZndDsmbmJzcDsmbmJzcDt2YWwgZSA6IGV4cHIgPSBUaW1lcyAoVmFs dWUgJnF1b3Q7MSZxdW90OywgVmFsdWUgJnF1b3Q7MyZxdW90Oyk8YnI+PGJyPlRoaXMgaXMgYSBH ZW5sZXggbGltaXRhdGlvbi4gJnF1b3Q7LTImcXVvdDsgaXMgcmVjb2duaXplZCBhcyBhbiBpbnRl Z2VyPGJyPmNvbnN0YW50LiBUaHVzIHlvdSBuZWVkIHRvIGFkZCBleHRyYSBzcGFjZToKPGJyPjxi cj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PGJyPiMgcGFyc2UgJnF1b3Q7MSozIC0gMiZxdW90Ozs7PGJyPi0gOiBl eHByID0gTWludXMgKFRpbWVzIChWYWx1ZSAmcXVvdDsxJnF1b3Q7LCBWYWx1ZSAmcXVvdDszJnF1 b3Q7KSwgVmFsdWUgJnF1b3Q7MiZxdW90Oyk8YnI+PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo8L2Jsb2NrcXVvdGU+ PGRpdj48YnI+b2sgPGJyPjwvZGl2Pjxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUi IHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgbWFyZ2lu OiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij4gJmd0OyBJIGFsc28gZGlk biYjMzk7dCB1bmRlcnN0YW5kIHdoeSB0aGVyZSBpcyB0aGlzIGluICZxdW90O3Rlcm0mcXVvdDsg Ogo8YnI+ICZndDs8YnI+ICZndDsgJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3wgXyAtJmd0 OyBmPGJyPiAmZ3Q7ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt8IF8gLSZndDsgZmFpbHdp dGggJnF1b3Q7c3ludGF4IGVycm9yJnF1b3Q7PGJyPjxicj5TaW1wbHkgYmVjYXVzZSBJIHdyb3Rl IHRoaXMgY29kZSBpbiBhIHJ1c2ggOi0pIEZvcmdldCBhYm91dCB0aGUgbGFzdDxicj5saW5lLjwv YmxvY2txdW90ZT48ZGl2Pjxicj5JIHRob3VnaHQgaXQgd2FzIHNvbWV0aGluZyBvYnNjdXIgYmVo aW5kIHRoZXNlIHR3byBsaW5lcyA6KQo8YnI+IDwvZGl2PjwvZGl2PnRoYW5rcyBmb3IgdGhlIHF1 aWNrIGFuc3dlcjxiciBjbGVhcj0iYWxsIj48YnI+LS0gPGJyPk1laGRpIERvZ2d1eTxicj7ZhdmH 2K/ZiiDYp9mE2K/apNmKPGJyPgo= ------=_Part_12813_8599392.1180376623111--