From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA04968; Fri, 14 May 2004 18:21:17 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA06574 for ; Fri, 14 May 2004 18:21:16 +0200 (MET DST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by concorde.inria.fr (8.12.10/8.12.10) with ESMTP id i4EGLFSH020107 for ; Fri, 14 May 2004 18:21:15 +0200 X-Sasl-enc: wiNpBv+brmYvQr/BAPO0xg 1084551671 Received: from [192.168.1.100] (unknown [218.81.134.113]) by mail.messagingengine.com (Postfix) with ESMTP id 4294EB7A5D7; Fri, 14 May 2004 12:20:59 -0400 (EDT) Date: Sat, 15 May 2004 00:20:48 +0800 (HKT) From: Martin Jambon X-X-Sender: martin@localhost To: David Fox Cc: Ocaml Subject: Re: [Caml-list] "changing" immutable record elements In-Reply-To: <40A4EAC8.2080905@lindows.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Miltered: at concorde with ID 40A4F1FB.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 immutable:01 prettier:01 rec:01 rec:01 match:02 jambon:02 jambon:02 wrote:03 let:04 let:04 fox:04 seems:05 core:06 specify:06 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Fri, 14 May 2004, David Fox wrote: > Unless I am missing some core language feature, it seems to me that the > most awkward part of the language is constructing an expression that > represents a record with a single field modified: > > let set_field3 rec value = > match rec with > {field1=field1; field2=field2; field3=field3; field4=field4; > field5=field5} -> > {field1=field1; field2=field2; field3=value; field4=field4; > field5=field5} > > is there any prettier way of doing this? Yes! let new_record = { old_record with field3 = value } NB: you must specify at least one field: let copy r = { r with some_field = r.some_field } Martin ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners