On Wed, 09 Dec 2009 12:08:43 -0800, Carl Worth <cworth at cworth.org> wrote:
> On Wed, 9 Dec 2009 14:24:46 +0100, Ruben Pollan <meskio at sindominio.net> 
> wrote:
> > Do you like to call them regress? Should I change that?
...
> > What about the functions notmuch_*_is_first? Is kind of reversed logic than
> > notmuch_*_has_more, the last are true when is not reach the limit but the
> > first ones are true when the limit is reached. But I think it make sense 
> > like
> > that.

It doesn't make sense in the case of trying to write a for loop that
iterates in the reverse order. The is_first semantic doesn't give you
what you want for the loop-control portion of the for loop.

> I'd like a more symmetric API here. Anyone have a favorite set of names
> for iterating a list in two directions?

In some recent coding I needed to implement a new iterator so I had the
chance to think about this some more. Here is what I came up with:

  New function          Corresponds to existing function (if any)
  ------------          -----------------------------------------
  move_to_first         <implicit in iterator creation>
  has_next              has_more
  move_to_next          advance

  move_to_last          <none>
  has_previous          <none>
  move_to_previous      <none>

  get                   get

The semantics of those all seem clear enough to me. They provide what's
necessary for all three portions of a for loop, (in either direction),
and everything pairs nicely.

The only downside is that the function names are a bit long in some
cases, but I'm willing to live with that until someone comes up with
better.

Thoughts?

-Carl

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<http://notmuchmail.org/pipermail/notmuch/attachments/20091221/e3d08c4e/attachment.pgp>

Reply via email to