[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SRFI 33 vs SLIB

This page is part of the web mail archives of SRFI 60 from before July 7th, 2015. The new archives for SRFI 60 contain all messages, not just those from before July 7th, 2015.

 | Date: Mon, 3 Jan 2005 17:55:54 -0800 (PST)
 | From: Taylor Campbell <campbell@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
 | 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.