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 SAA32738; Sun, 23 Feb 2003 18:16:09 +0100 (MET) 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 SAA00026 for ; Sun, 23 Feb 2003 18:16:08 +0100 (MET) Received: from mailhost.ens-lyon.fr (pluvier.ens-lyon.fr [140.77.167.5]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h1NHG7T02274 for ; Sun, 23 Feb 2003 18:16:07 +0100 (MET) Received: from babasse.residence.ens-lyon.fr ([140.77.128.220] helo=Babasse) by mailhost.ens-lyon.fr with smtp (Exim 3.35 #1 (Debian)) id 18mzjF-0004kB-00; Sun, 23 Feb 2003 18:15:53 +0100 Date: Sun, 23 Feb 2003 18:12:03 +0100 From: Samuel Mimram To: "Alexander S. Usov" Cc: caml-list@inria.fr Subject: Re: [Caml-list] One question Message-Id: <20030223181203.6cf41436.Samuel.Mimram@ens-lyon.fr> In-Reply-To: <1046017748.12274.14.camel@kvip88.KVI.nl> References: <1046017748.12274.14.camel@kvip88.KVI.nl> X-Mailer: Sylpheed version 0.8.10claws13 (GTK+ 1.2.10; i386-debian-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hello. I think you are confusing the operators = and ==. = is used to check if two objects have the same "logical" contents whether == checks if two objects are exactly the same in memory. When you type a = insert a "word", the function insert returns a new lex_tree which has the same contents as the variable a but is another object in memory. That is why I think you wanted to write : let a = insert [] "word" in a = insert a "word" ;; which effectively returns true. It is important to understand that the variable a and the result returned by the function insert are logically the same but not physically. Samuel. On Sun, 23 Feb 2003 17:29:14 +0100 "Alexander S. Usov" wrote: > Hi! > > Can anybody expalin me why in such code > > ------ > type lex_node = Letter of char * bool * lex_tree > and lex_tree = lex_node list ;; > > exceprion Already ;; > > let rec insert lex word = > let whd = word.[0] > and wtl = String.sub word 1 (String.length word - 1) > in > try > match lex with > | (Letter(c,b,t) as letter)::tail when (c <> whd) -> > letter :: (insert tail word) > | Letter(c,b,t) :: tail when (wtl = "") -> > if b = true then > raise Already > else > Letter(c,true,t) :: tail > | Letter(c,b,t) :: tail -> > Letter(c,b,(insert t wtl)) :: tail > | [] -> > if wtl = "" then > [ Letter (whd, true, []) ] > else > [ Letter (whd, false, insert [] wtl) ] > with > | Already -> lex ;; > > let a = insert [] "word" > in > a == insert a "word" ;; > ----- > > returns false? > > -- > Best regards, > Alexander. > > > ------------------- > 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 -- Samuel Mimram Samuel.Mimram@ens-lyon.fr ------------------- 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