caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jean-Christophe Filliatre <Jean-Christophe.Filliatre@lri.fr>
To: "Lars Nilsson" <chamaeleon@adelphia.net>
Cc: <caml-list@inria.fr>
Subject: Re: [Caml-list] time complexity on basic data types
Date: Fri, 24 Aug 2001 14:27:49 +0200 (MEST)	[thread overview]
Message-ID: <15238.18501.528683.170652@lri> (raw)
In-Reply-To: <002d01c12c23$2179ea40$0200a8c0@buf.adelphia.net>


Lars Nilsson writes:
 > At the risk of making a fool of myself in public, is there such a thing as
 > insertion in a list at all in Ocaml? From what I have seen there is only
 > concatenation of a single element and a list (::), and operations would have
 > to be defined with this by means recursion/iteration. If this is the case, I
 > assume insertion at some point in a list would have O(n) complexity in the
 > general case? If not, what am I missing (@ being something other than I
 > think?)

You're right. But a list is not the adequate data structure if you want
to insert at some arbitrary points in it. It is a stack-like data
structure (i.e. push and pop are O(1)) or can be used when you want to
aggregate elements regardless the order and then iterate over / traverse
all of them. 

If you really want to insert at any point in O(1), you may consider using
mutable linked lists (see for instance the implementation of the
module Queue in ocaml standard library). You loose persistence, but it
may not be mandatory in your case.

Hope this helps,
-- 
Jean-Christophe Filliatre
  mailto:Jean-Christophe.Filliatre@lri.fr
  http://www.lri.fr/~filliatr
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


  parent reply	other threads:[~2001-08-24 12:28 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-23 17:27 Krishnaswami, Neel
2001-08-23 17:35 ` Xavier Leroy
2001-08-23 22:29 ` Lars Nilsson
2001-08-23 23:50   ` Gerd Stolpmann
2001-08-24 12:27   ` Jean-Christophe Filliatre [this message]
  -- strict thread matches above, loose matches on Subject: below --
2001-08-23 16:16 Collin Monahan

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=15238.18501.528683.170652@lri \
    --to=jean-christophe.filliatre@lri.fr \
    --cc=caml-list@inria.fr \
    --cc=chamaeleon@adelphia.net \
    /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).