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.1 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 2609BBC6C for ; Mon, 26 Nov 2007 22:46:26 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAKPNSkfAXQInh2dsb2JhbACPQQEBAQgKKQ X-IronPort-AV: E=Sophos;i="4.23,215,1194217200"; d="scan'208";a="19702068" Received: from concorde.inria.fr ([192.93.2.39]) by mail4-smtp-sop.national.inria.fr with ESMTP; 26 Nov 2007 22:46:25 +0100 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id lAQLkPqW016597 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Mon, 26 Nov 2007 22:46:25 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAO/MSkdC+VyrkGdsb2JhbACPQQEBAQEHBAQTEQc X-IronPort-AV: E=Sophos;i="4.23,215,1194217200"; d="scan'208";a="6203942" Received: from ug-out-1314.google.com ([66.249.92.171]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Nov 2007 22:46:24 +0100 Received: by ug-out-1314.google.com with SMTP id k40so16645ugc for ; Mon, 26 Nov 2007 13:46:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=cpbgqeckly3hg3eArvOlTsTyr6yulp2fVXDIu1Xohf4=; b=oaJP4VXii3f9exTVNvpAi8IgZpgeyhHuvF0TXjvJzvie92dJY4QgGppJt4CxSBSx/ObqrBIqRGL2eedDKHv2aYe4cWv9RUBB8yg+RRsiA3N1worbF9cL3oiZZLPOSqsjIG1hVqcWnuwHtcdicrgSNk2VG/0dWBhDnph1CTi2sW0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=jzoNgRm5/AFrBZrhFxUrPCh8IvXeFMEyZmvWPIUclS7b+5sgGv9uCZKzPQjUWlAqOzJNR9WdnF+4Go2bQToY/YV5zRR3d97PwKi5hBy7W/W9uQh/rzU+QDnEvoRNaae+DwAvkhN0j3fsVzgL5JTOdMB4S5lQi5wZMXu+ObakYmM= Received: by 10.142.239.11 with SMTP id m11mr695576wfh.1196113582408; Mon, 26 Nov 2007 13:46:22 -0800 (PST) Received: by 10.143.168.5 with HTTP; Mon, 26 Nov 2007 13:46:22 -0800 (PST) Message-ID: <9d3ec8300711261346r4b74f5gddce229324dcad2c@mail.gmail.com> Date: Mon, 26 Nov 2007 16:46:22 -0500 From: "Till Varoquaux" To: "Caml List" Subject: Circuralizing lists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Miltered: at concorde with ID 474B3EB1.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; failwith:01 cheers:01 rec:01 rec:01 lazy:02 let:03 let:03 function:08 i'm:09 res:09 res:09 writing:12 however:13 type:14 type:14 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