Gnus development mailing list
 help / color / mirror / Atom feed
From: visigoth@olivier.pc.cs.cmu.edu (John McClary Prevost)
Cc: ding@ifi.uio.no
Subject: Re: Questions about backend interface and ranges
Date: 18 Dec 1995 06:27:03 -0500	[thread overview]
Message-ID: <ygfenu2394o.fsf@olivier.dementia.org> (raw)
In-Reply-To: larsi@ifi.uio.no's message of 15 Dec 1995 20:14:50 +0100

>>>>> "lmi" == Lars Magne Ingebrigtsen <larsi@ifi.uio.no> writes:

    lmi> Yup.  But you should take the "range" thing in the manual with a pinch
    lmi> of salt.  Gnus uses virtually nothing but sorted numerical lists for
    lmi> all these functions.  (Sorted numerical lists are a degenerate form of
    lmi> a range, though, so the manual isn't actually wrong.  It's just more
    lmi> strict than what the reality is.)

Yup--just trying to make my code as general as possible.  If your
document says ranges, I'll implement ranges.  ;>

    lmi> All the functions you outline are indeed useful.  The reason that
    lmi> Gnus doesn't use (proper) ranges for much now is that functions like
    lmi> that hadn't been written yet.

    lmi> So if you write the functions, Gnus will begin to make them useful.
    lmi> :-)

I'll write them up, then.  They might not be the most optimal form at
first (I'm not sure what needs to be done to make things optimal under
emacs... maybe the more trivial things should be macros) but somone
else can work that out later if need be.

    lmi> Perhaps `range-car' and `range-cdr' would be two useful functions
    lmi> instead?  They would (kinda) mimic what `car' and `cdr' do for normal
    lmi> lists...


         {...being able to get "first n pieces" out of range...}
    lmi> That would be extremely useful.  I hadn't thought of that one.

Better yet--if this operation were smart enough to group sequences of
numbers together (like getting the first 5 from (1 2 3 4 5 6 7) gives
you (1 . 5) and not (1 2 3 4 5)...)  Hmm...

    lmi> Common Lisp calls the equivalent list functions `but-last' and
    lmi> `last'...  No, wait, these would return ranges (lists) and `last' jsut
    lmi> returns the last element...

What I'm considering for names now is range-first and range-rest, to
go with the "first" and "rest" of CL.  Using an optional argument, it
also makes sense: (range-first foo 5) is the first 5 elements of foo.

    lmi> I haven't suggested this to RMS yet, but I would like functions like
    lmi> this to exist in a separate "range.el" package, so the functions would
    lmi> just be called `range-eq' and stuff.

Okay--I'm making a new range.el file, then.  Here's my list of
functions at the moment:

(range-first RANGE &optional COUNT)
(range-but-first RANGE &optional COUNT)
(range-append RANGE1 RANGE2)
(range-equal RANGE1 RANGE2)
(range-is-member-p RANGE NUMBER)
(range-add-member RANGE NUMBER)

These are pretty much self descriptive.  To be technical on what
range-append means, though, this is the guarantee:

{ for all z | z in R1 or z in R2, z is in (range-append R1 R2) }

Off to code it...

John.


      reply	other threads:[~1995-12-18 11:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1995-12-15  3:38 John McClary Prevost
1995-12-15 19:14 ` Lars Magne Ingebrigtsen
1995-12-18 11:27   ` John McClary Prevost [this message]

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=ygfenu2394o.fsf@olivier.dementia.org \
    --to=visigoth@olivier.pc.cs.cmu.edu \
    --cc=ding@ifi.uio.no \
    /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).