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=AWL autolearn=disabled version=3.1.3 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 353C2BC6B for ; Mon, 26 Nov 2007 23:02:08 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAJ/RSkfUGyodimdsb2JhbACPQQEBAQgCCBERBw X-IronPort-AV: E=Sophos;i="4.23,216,1194217200"; d="scan'208";a="6204303" Received: from discorde.inria.fr ([192.93.2.38]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Nov 2007 23:02:08 +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 lAQM26vV019271 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Mon, 26 Nov 2007 23:02:07 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAJ/RSkfUGyodimdsb2JhbACPQQEBAQgCCBERBw X-IronPort-AV: E=Sophos;i="4.23,216,1194217200"; d="scan'208";a="6204301" Received: from smtp3-g19.free.fr ([212.27.42.29]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Nov 2007 23:02:01 +0100 Received: from smtp3-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp3-g19.free.fr (Postfix) with ESMTP id DAE8E17B5A2; Mon, 26 Nov 2007 23:02:00 +0100 (CET) Received: from [192.168.0.5] (rke75-3-82-229-183-156.fbx.proxad.net [82.229.183.156]) by smtp3-g19.free.fr (Postfix) with ESMTP id A9B5B17B580; Mon, 26 Nov 2007 23:02:00 +0100 (CET) Message-ID: <474B4187.8040301@frisch.fr> Date: Mon, 26 Nov 2007 22:58:31 +0100 From: Alain Frisch User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: Till Varoquaux Cc: Caml List Subject: Re: [Caml-list] Circuralizing lists References: <9d3ec8300711261346r4b74f5gddce229324dcad2c@mail.gmail.com> In-Reply-To: <9d3ec8300711261346r4b74f5gddce229324dcad2c@mail.gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at discorde with ID 474B425E.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; frisch:01 frisch:01 failwith:01 recursive:01 wrote:01 rec:01 rec:01 caml-list:01 alain:01 alain:01 loops:02 lazy:02 functional:02 let:03 let:03 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? No, this is not possible (using only safe features). The only recursive (non functional) value loops that can be built have a fixed shape. -- Alain