[Haskell-cafe] Data.Ring -- Pre-announce

John Van Enk vanenkj at gmail.com
Thu Dec 31 14:56:25 EST 2009


Hi Luke,

Thanks for the feedback. I had some follow up comments.

On Thu, Dec 31, 2009 at 5:50 AM, Luke Palmer <lrpalmer at gmail.com> wrote:

> Code looks okay.  It suffers from the same persistence/amortization
> problem as the classical functional queue; if you happen to shift from
> one of the edge cases (eg. prev when the left is empty), you will get
> degenerate time complexity, reversing that right list over and over.
> See discussion at "Simple and efficient purely functional queues and
> deques, by Chris Okasaki"; probably can adapt that solution to yours.
> More of an academic interest, I doubt anyone will care about those
> cases.
>

Yes. I agree and did see it. I'm reading the paper and may implement some of
the stuff he talks about.


> Ring is a comonad, so you can make it an instance of one if you want
> to have some fun :-P
>

I plan on adding as many instances as I know and make sense to me. :)


> It seems weird that you would put the focus in the middle in fromList.
>  Overly strict.  Why not just put it at the first element?  (Also
> easier to reason about)
>

It actually uses the first element as the focus, not the middle.


> I would consider considering a ring where *both* left and right were
> infinite to be valid, but not when only one of them is infinite (when
> they both are infinite, you will never get to reverse).
>

This would be neat, perhaps someday. I don't think this works well with my
current API. :(

Thanks again. :)

/jve
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091231/29eaccf9/attachment.html


More information about the Haskell-Cafe mailing list