caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Julien Blond <julien.blond@gmail.com>
To: Eric Jaeger <eric.jaeger@ssi.gouv.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Function returning recursive lists
Date: Tue, 18 Dec 2012 12:21:59 +0100	[thread overview]
Message-ID: <CAG3nF7XbzhxBniyswXE9nrbf9=yOXBum-3WD0a-dyy_EWC2oEw@mail.gmail.com> (raw)
In-Reply-To: <50d02b65.6c4cb40a.66ab.4256SMTPIN_ADDED_BROKEN@mx.google.com>

[-- Attachment #1: Type: text/plain, Size: 2298 bytes --]

Hi Eric,

I tried to do something like that some times ago, while my concern was
about some tricky recursive module definition, i think the problem was the
same : the chicken-egg one. Your docycle is trying to define something it
must already know and the problem can't be escaped for evaluation order
prevents any value to be recursive at definition time. The recursivity can
be achieved by using a second construction pass that corresponds to
additional properties (lazyness or mutability or hacking through Obj).
Those properties will necessarily occur either explicitly (like OCaml) or
implicitly (like in Haskell).

So, the real question, as far as i understand your problem, is : are you
asking how to hide those properties in OCaml or to see if you need to ask
your purchasing department some quantum computer that can predict the
address of a future allocated block ? ;)

-- Julien


2012/12/18 Eric Jaeger <eric.jaeger@ssi.gouv.fr>

> Hi everyone,****
>
> ** **
>
> There are various discussions on recursive lists in the archive, yet I was
> wondering whether or not it was possible in pure OCaml to write a function
> returning non-constant recursive lists.****
>
> ** **
>
> For example, I would like to have a function “docycle:’a list->’a list”
> that takes a non recursive list and transforms it into a recursive list
> containing the same elements. That is, “docycle [1;2;3]” would return a
> list structurally equivalent to “let rec c=1::2::3::c in c”. So far, my
> various attempts (OCaml 3.12) have not been successful. Another good
> example is to have a List.map compatible with recursive lists.****
>
> ** **
>
> Please note that it is, in a way, a theoretical (and possibly naïve)
> question :****
>
> **-          **I do not consider recursive lists as the perfect
> implementation for my problem****
>
> **-          **I do not care about efficiency****
>
> **-          **I do not want to use an ad hoc mutable/lazy list datatype
> (unless I’ve also a conversion function toward standard lists)****
>
> **-          **I do not want to use Obj or other similar tricks****
>
> It’s just that I’m curious whether or not what I’m trying to achieve is
> possible.****
>
> ** **
>
>   Regards, Eric****
>
> ** **
>

[-- Attachment #2: Type: text/html, Size: 3946 bytes --]

       reply	other threads:[~2012-12-18 11:22 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <50d02b65.6c4cb40a.66ab.4256SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-18 11:21 ` Julien Blond [this message]
2012-12-18 13:13   ` Eric Jaeger
     [not found]   ` <50d06c18.0f5cc20a.16d8.ffff8b8cSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-19 16:45     ` Lukasz Stafiniak
     [not found] <50d02b62.827bc20a.6f6e.65b8SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-19 22:23 ` Philippe Wang
2012-12-19 23:50   ` Jeremy Yallop
2012-12-20 15:24     ` Ashish Agarwal
     [not found] <50d02b72.7155c20a.1dbf.4e2fSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-18  9:35 ` Gabriel Scherer
2012-12-18  8:37 Eric Jaeger
2012-12-21 19:55 ` Peter Frey
2012-12-22 18:10   ` Philippe Wang
     [not found]   ` <50D59147.3000201@ssi.gouv.fr>
2012-12-28  1:41     ` Peter Frey
2012-12-28  9:37       ` Arkady Andrukonis
2012-12-28 12:21         ` Philippe Wang
2012-12-28 12:30       ` Philippe Wang
2012-12-28 15:22         ` Didier Cassirame
2013-01-04  0:45           ` Francois Berenger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAG3nF7XbzhxBniyswXE9nrbf9=yOXBum-3WD0a-dyy_EWC2oEw@mail.gmail.com' \
    --to=julien.blond@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=eric.jaeger@ssi.gouv.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).