From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 99471BB91 for ; Fri, 22 Jul 2005 02:27:53 +0200 (CEST) Received: from mx1.ucdavis.edu (mx1.ucdavis.edu [169.237.104.11]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j6M0RpWe013862 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Fri, 22 Jul 2005 02:27:53 +0200 Received: from [169.237.7.95] (puck.cs.ucdavis.edu [169.237.7.95]) by mx1.ucdavis.edu (8.13.3/8.13.1/it-defang-5.4.0) with ESMTP id j6M0RNVF021500; Thu, 21 Jul 2005 17:27:24 -0700 (PDT) Message-ID: <42E03D30.5000406@crans.org> Date: Thu, 21 Jul 2005 17:26:24 -0700 From: Stephane Glondu User-Agent: Debian Thunderbird 1.0.2 (X11/20050331) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Jonathan Roewen Cc: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Syntax errors with match and interface files References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.49 on 169.237.104.11 X-Miltered: at concorde with ID 42E03D87.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 syntax:01 syntax:01 buffer:01 char:01 char:01 buffer:01 ...:98 wrote:01 matched:01 printable:01 printable:01 defined:01 patterns:02 match:02 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 Hi, Jonathan Roewen wrote: > I'm getting a curious syntax error: > > [...] > > try > let put c = putch c; Queue.add c buffer in > match char_code with > | Key.kEnter -> put '\n' > | Key.kBksp -> put '\b' > | ch -> put (Key.to_char ch) > with Key.Not_printable -> () You cannot use defined variables as patterns (this is a common mistake). Variables appearing in a pattern are always bound to (parts) of the matched value. Something close to what you want would be : try let put c = putch c; Queue.add c buffer in match char_code with | ch when ch = Key.kEnter -> put '\n' | ch when ch = Key.kBksp -> put '\b' | ch -> put (Key.to_char ch) with Key.Not_printable -> () Stephane Glondu.