Re: SRFI 33 vs SLIB Aubrey Jaffer 07 Jan 2005 05:35 UTC

 | Date: Mon, 3 Jan 2005 17:55:54 -0800 (PST)
 | From: Taylor Campbell <>
 | I'm wondering why you started with SLIB, rather than, as you

slib/logical.scm was first copyrighted in 1991.  It predates SRFI-0 by
8 years; SRFI-33 by 11 years.

 | mention in passing in the current document, the very carefully
 | thought-out SRFI 33 for the base of this SRFI.

Its bizarre that I am first criticized for taking preceedent from
SRFI-4 (in SRFI-47); then for not taking preceedent from a withdrawn

 | In particular, the naming in SLIB seems to be quite ad-hoc -- no
 | consistency with the LOGICAL-, BITWISE:, LOG, &c.  prefixes --, and
 | the set of general bitwise operations is somewhat different from
 | that of SRFI 33: some are missing & some are added.  Was it simply
 | that starting from SLIB was easier at the time, or is there a more
 | complete rationale for the conventions you chose?

I took functions from Common-Lisp which are useful, keeping their
names.  Names for new functions should not be common words which could
suffer collisions.  Where the common words are the best description, I
add a prefix of the package name or theme followed by `:'.  In
packages where only a couple of names are prefixed, this can look

 | If it is simply that SLIB was an easier starting point for you, I'd
 | like to suggest a few name changes to bring what names you added
 | closer to SRFI 33's conventions:
 |   logical:ones       -> bit-mask     (%MASK internally in SRFI 33)
 |   logical:rotate     -> bitwise-rotate

ONES and ROTATE would be better names, but are too common as words and
suffered collisions.

BIT-MASK is a reasonable suggestion.  But why BIT-MASK and not

To me, bitwise means that bits are operated on in their bit-lanes, not
affecting other bit-lanes.  ROTATE doesn't work that way.
ASH is another problem word, but is prior art from Common-Lisp.

 |   bit-reverse        -> bitwise-reverse

This one jumps bit-lanes.  I think bit-reverse is the better

 |   bitwise:laminate   -> bitwise-laminate
 |   bitwise:delaminate -> bitwise-delaminate

I used bitwise because bits in corresponding lanes are extracted.
BIT-LAMINATE and BIT-DELAMINATE might be better.