Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Recursive lists
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Sébastien_Furic <sebastien.furic@t...>
Subject: Re: [Caml-list] Recursive lists
Luca Pascali wrote:

> Hi everyone.
> I have a little question about the recursive lists.
> In an application I needed to use a list composed by some elements 
> (placed in the head of the list) and recursive element, like
> let rec_list =
>    let rec l2 = 100 :: l2 in
>       [1;2;3;4;5] @ l2
> in order to have the last elements periodically repeated.
> In a list like this, I found that the map function goes in stack 
> overflow. It seems that it is not aware of the recursive characteristics 
> of the input list.
> I had to write a version of the map function to support this in my 
> software (I have to finalize something before posting it).
> My questions are:
> Can some functions of the List library support the use of the recursive 
> lists?
> I mean: can some scanning functions such as map, for_all, exists, mem, 
> filter, and so on understand if they are working on recursive lists and 
> act correctly without going in buffer overflow or infinite loops?
> Did anyone already have a similar needing? And in which way did he/she 
> work?
> Thanks in advance to anyone
> Luca

  You can use lazy lists to solve the problem. A lazy list delivers its 
elements on demand so you can manipulate infinite lists safely provided 
you don't print their whole contents for instance...
  See to see how to 
implement them (they're not present in the OCaml distribution).


To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: