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=AWL,DNS_FROM_RFC_ABUSE, DNS_FROM_RFC_WHOIS autolearn=disabled version=3.1.3 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id B6373BC69 for ; Thu, 20 Dec 2007 22:04:16 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAP9nakfAXQImh2dsb2JhbACQAQIBCAopmh0 X-IronPort-AV: E=Sophos;i="4.24,191,1196636400"; d="scan'208";a="5408266" Received: from discorde.inria.fr ([192.93.2.38]) by mail2-smtp-roc.national.inria.fr with ESMTP; 20 Dec 2007 22:04:16 +0100 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id lBKL4G8Q000303 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Thu, 20 Dec 2007 22:04:16 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAAhoakdEjsh1nmdsb2JhbACQAQIBAQcEBimaHA X-IronPort-AV: E=Sophos;i="4.24,191,1196636400"; d="scan'208";a="7102809" Received: from web30504.mail.mud.yahoo.com ([68.142.200.117]) by mail3-smtp-sop.national.inria.fr with SMTP; 20 Dec 2007 22:04:15 +0100 Received: (qmail 52599 invoked by uid 60001); 20 Dec 2007 21:04:13 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=gSWfvShm/sB46IyJYz0wZmPXHJ0YxzUMe2S1wydxNv7vR0bPVLu1O+VLw9rBfjKHUGIL1SV1u6AxjtgoxCxeZKvZiWculXcv7J9bcc6zvime1eZwEMnMhoif4ZRMAjUSgBOhf1UgQEwtZOdVDSZyaieIrccQeEXdHXpuSjcggSU=; X-YMail-OSG: a_ejlukVM1nqDcRxwXyDfe3qRE7P7ew0zfK7lE1DS7c_haULcQk1E3j7LVv6FaN_NSFLRf4jxDc_COYHaExTKR19uSXCtSqAdlopNbvwpWuhnywCfXKN7w12tAMi1w-- Received: from [141.212.108.138] by web30504.mail.mud.yahoo.com via HTTP; Thu, 20 Dec 2007 13:04:13 PST Date: Thu, 20 Dec 2007 13:04:13 -0800 (PST) From: David Thomas Subject: Re: [Caml-list] Circuralizing lists To: Caml List In-Reply-To: <9d3ec8300711261346r4b74f5gddce229324dcad2c@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <730161.46080.qm@web30504.mail.mud.yahoo.com> X-Miltered: at discorde with ID 476AD8D0.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; trivial:01 failwith:01 cheers:01 beginner's:01 ocaml:01 bug:01 beginners:01 wrote:01 rec:01 rec:01 caml-list:01 caml-list:01 short:01 bin:01 lazy:02 This depends what you mean by "at all possible." With the built in lists, the answers others have given are correct - the short answer being "no." That said, if it's exceedingly useful for your application, you could do something like: type 'a rlist = Empty | Cons of 'a * 'a rlist ref;; let circularize l = let l1 = ref Empty in let l2 = List.fold_right (fun a b -> ref (Cons (a, b))) l l1 in l1 := !l2; l1;; Most of what is in List is pretty trivial to duplicate for the above type, and you could hide the mutability. Of course, matching is no longer pretty... but "at all possible"? Yes. --- Till Varoquaux wrote: > Writing the list containing an inifinite number of > ones can easily be done as: > > let rec ones = 1::ones > > I however don't know of any type safe to generate > the infinite list which is the repetition of a given > list (in a type safe non lazy way). > What I'm looking for is a code that would do: > > let circularize = function > | [] -> failwith "cannot circularize empty > lists" > | l -> let rec res = l@res in res > > Is this at all possible? > > Cheers, > Till > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: > http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > ____________________________________________________________________________________ Looking for last minute shopping deals? Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping