Isaac Dupree wrote:
[...]

Well Chris Okasaki called them "Skew Binary Random-Access Lists", which is even longer :)

:)

hmm.. IndexableList? (just a thought, not sure whether I like it any better)

RAList?
IList? <- (will I be sued by a large computer company for that?)

[...]
Yes, I wasn't happy with that one either. The view-concept of Data.Sequence is a good idea.
>
> yeah, it's a good idea, although I'm not sure how much I like the
> particular syntax of how it's done in Data.Sequence (the view-types'
> constructor names, mostly)

I now have

data View a
        = Empty
        | Cons a (RandomAccessList a)

and

view :: RandomAccessList a -> a

additionally, I renamed "extractHead" to "uncons" (which is OK, because I also have "cons") but still left "head" and "tail" with the typical list-like behaviour (causing an error on empty lists).

[Monad vs. Maybe]

That's quite convincing, most of all that "fail" has rather strange definitions for many Monads (because it originally does not belong to monads, does it?).

[...]

The size function is in O(1) because I cache it, otherwise it would be

size (RandomAccessList xs) = sum (map fst xs)

which is O(log n). I consider the caching useful, as most applications will check 0 <= i < size quite often.

sounds good

[...]

If two lists have exactly the same size, all the complete binary trees holding the data have the same size as well. This can be zipped directly and is a bit (~5% in my tests) faster.

okay, that sounds like a fair optimization, since zipping same-size lists is a nice thing to do anyway. But the asymptotic speed ideally should still be O(min(m,n)), if possible?

Well... I guess that's possible converting the shorter one into a list and using fold for zipping. I'll have a close look at this!


--

Früher hieß es ja: Ich denke, also bin ich.
Heute weiß man: Es geht auch so.

 - Dieter Nuhr
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to