From: "Loup Vaillant" <loup.vaillant@gmail.com>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Vec: a functional implementation of extensible arrays
Date: Thu, 19 Jul 2007 09:45:48 +0200 [thread overview]
Message-ID: <6f9f8f4a0707190045g609abca4kfa3bb39d93604081@mail.gmail.com> (raw)
In-Reply-To: <28fa90930707181032q7681340pc30fb47434aff5fc@mail.gmail.com>
2007/7/18, Luca de Alfaro <luca@dealfaro.org>:
> Dear All,
>
> I would like to share with you an Ocaml implementation of extensible arrays.
> The implementation is functional, based on balanced trees (and on the code
> for Set and Map); I called the module Vec (for vector - I like
> short names). You can find it at
> http://www.dealfaro.com/home/vec.html
> Module Vec provides, in log-time:
>
> Access and modification to arbitrary elements ( Vec.put n el v puts element
> el in position n of vector v, for instance).
> Concatenation
> Insertion and removal of elements from arbitrary positions (auto-enlarging
> and auto-shrinking the vector).
> as well as:
>
> All kind of iterators and some visitor functions.
> Efficient translation to/from lists and arrays.
> An advantage of Vec over List, for very large data structures, is that
> iterating over a Vec of size n requires always stack depth bounded by log n:
> with lists, non-tail-recursive functions can cause stack overflows.
>
> I have been using this data structure for some months, and it has been very
> handy in a large number of occasions. I hope it can be as useful to you.
>
> I would appreciate all advice and feedback. Also, is there a repository
> where I should upload it? Do you think it is worth it?
>
> All the best,
>
> Luca
Very interesting. I always felt uneasy about the presence of
imperative arrays without a functional counterpart. I can't wait to
try it.
Looking at your array type definition, I assume that the timings you
specified are worst-case? Is it possible to achieve better (but
amortized) bounds? Do you think it would be worth the trouble?
I didn't see in your specs the complexity of your iterators. Does
these work in linear time, like those of the List and Array module?
Regards,
Loup
next prev parent reply other threads:[~2007-07-19 7:45 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-18 17:32 Luca de Alfaro
2007-07-19 7:45 ` Loup Vaillant [this message]
2007-07-19 8:17 ` [Caml-list] " Hugo Ferreira
2007-07-19 16:51 ` Luca de Alfaro
2007-07-19 17:13 ` Luca de Alfaro
2007-07-19 16:59 ` Luca de Alfaro
2007-07-20 7:35 ` Loup Vaillant
2007-07-20 8:14 ` Jon Harrop
2007-07-20 15:42 ` Luca de Alfaro
2007-07-20 16:45 ` Brian Hurt
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=6f9f8f4a0707190045g609abca4kfa3bb39d93604081@mail.gmail.com \
--to=loup.vaillant@gmail.com \
--cc=caml-list@yquem.inria.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