Settling the singular vs plural library names issue Lassi Kortela (02 Nov 2021 19:12 UTC)
(missing)
Re: [scheme-reports-wg2] Settling the singular vs plural library names issue Dr. Arne Babenhauserheide (02 Nov 2021 23:08 UTC)
Library name aesthetics Lassi Kortela (03 Nov 2021 07:55 UTC)
Re: [scheme-reports-wg2] Library name aesthetics Linas Vepstas (03 Nov 2021 17:47 UTC)

Settling the singular vs plural library names issue Lassi Kortela 02 Nov 2021 19:12 UTC

Could we make an attempt to decide on either singular or plural for SRFI
and RnRS library names?

Below is an exhaustive survey of the current names. It shows that plural
is clearly winning: R7RS Small uses singular, but even in that standard
there are only two library names that clearly use singular where they
could use plural: (scheme char) and (scheme file). The other names are
either uncountable, or refer to something intrinsically singular such as
case-lambda, which is one specific operator.

R7RS Large adds several more singular library names, but since it's not
yet finalized, this might still change?

Apart from the singular vs plural habit, RnRS and especially R7RS favors
short library names, just a single word. Many of the current, non-RnRS
SRFI library names are quite long by comparison. Personally, I much
prefer the short names, but it would be nice to come to a consensus here
as well.

If we manage to make a decision, ideally we can synchronize the R7RS
Large and SRFI library names, adhering to a consistent style in each.

### R6RS names

arithmetic bitwise
arithmetic fixnums [plural]
arithmetic flonums [plural]
bytevectors [plural]
conditions [plural]
control
enums [plural]
eval
exceptions [plural]
files [plural]
hashtables [plural]
io ports [plural]
io simple
lists [plural]
mutable-pairs [plural]
mutable-strings [plural]
programs [plural]
r5rs
records inspection [plural]
records procedural [plural]
records syntactic [plural]
sorting
syntax-case
unicode

### R7RS Small names

base
case-lambda
char [singular]
complex
cxr
eval
file [singular]
inexact
lazy
load
process-context
r5rs
read
repl
time
write

### R7RS Large names vs equivalent SRFI names

SRFI 1 -- list -- lists [singular vs plural]
SRFI 14 -- charset -- char-sets [singular vs plural]
SRFI 41 -- stream -- streams [singular vs plural]
SRFI 101 -- rlist -- N/A [singular]
SRFI 111 -- box -- N/A [singular]
SRFI 113 -- set -- N/A [singular]
SRFI 115 -- regex -- regex
SRFI 117 -- list-queue -- list-queues [singular vs plural]
SRFI 121 -- generator -- N/A [singular]
SRFI 124 -- ephemeron -- N/A [singular]
SRFI 125 -- hash-table -- hashtables [singular vs plural]
SRFI 127 -- lseq -- lazy-sequences [plural]
SRFI 128 -- comparator -- N/A
SRFI 132 -- sort -- sorting
SRFI 133 -- vector -- vectors [singular vs plural]
SRFI 134 -- ideque -- N/A [singular]
SRFI 135 -- text -- N/A [singular]
SRFI 141 -- division -- integer-division
SRFI 143 -- fixnum -- fixnums [singular vs plural]
SRFI 144 -- flonum -- N/A [singular]
SRFI 146 -- mapping -- N/A [singular]
SRFI 151 -- bitwise -- bitwise-operations
SRFI 158 -- generator -- generators-and-accumulators [singular vs plural]
SRFI 159 -- show -- N/A
SRFI 160 -- vector -- N/A [singular]

### Non R7RS Large SRFI names

SRFI 0 cond-expand
SRFI 2 and-let*
SRFI 4 numeric-vectors [plural]
SRFI 5 let
SRFI 6 basic-string-ports [plural]
SRFI 8 receive
SRFI 9 records [plural]
SRFI 11 let-values
SRFI 13 strings [plural]
SRFI 15 fluid-let
SRFI 16 case-lambda
SRFI 17 generalized-set!
SRFI 18 multithreading
SRFI 19 time
SRFI 21 real-time-multithreading
SRFI 23 error
SRFI 25 multi-dimensional-arrays [plural]
SRFI 26 cut
SRFI 27 random-bits [plural]
SRFI 28 basic-format-strings [plural]
SRFI 29 localization
SRFI 31 rec
SRFI 34 exception-handling
SRFI 35 conditions [plural]
SRFI 37 args-fold
SRFI 38 with-shared-structure
SRFI 39 parameters [plural]
SRFI 42 eager-comprehensions [plural]
SRFI 43 vectors [plural]
SRFI 44 collections [plural]
SRFI 45 lazy
SRFI 46 syntax-rules
SRFI 47 arrays [plural]
SRFI 48 intermediate-format-strings [plural]
SRFI 51 rest-values [plural]
SRFI 54 cat
SRFI 57 records [plural]
SRFI 59 vicinities [plural]
SRFI 60 integer-bits [plural]
SRFI 61 cond
SRFI 63 arrays [plural]
SRFI 64 testing
SRFI 66 octet-vectors [plural]
SRFI 67 compare-procedures [plural]
SRFI 69 basic-hash-tables [plural]
SRFI 71 let
SRFI 74 blobs [plural]
SRFI 78 lightweight-testing
SRFI 86 mu-and-nu
SRFI 87 case
SRFI 95 sorting-and-merging
SRFI 98 os-environment-variables [plural]
SRFI 99 records [plural]
SRFI 126 r6rs-hashtables [plural]
SRFI 128 comparators [plural]
SRFI 129 titlecase
SRFI 130 string-cursors [plural]
SRFI 131 records [plural]
SRFI 145 assume
SRFI 152 strings [plural]
SRFI 156 predicate-combiners [plural]
SRFI 175 ascii

### Summary of clearly singular names

char [R7RS Small]
file [R7RS Small]

list [R7RS Large]
charset [R7RS Large]
stream [R7RS Large]
rlist [R7RS Large]
box [R7RS Large]
set [R7RS Large]
list-queue [R7RS Large]
generator [R7RS Large]
ephemeron [R7RS Large]
hash-table [R7RS Large]
vector [R7RS Large]
ideque [R7RS Large]
text [R7RS Large]
fixnum [R7RS Large]
flonum [R7RS Large]
mapping [R7RS Large]
generator [R7RS Large]
vector [R7RS Large]

### Summary of clearly plural names

arithmetic fixnums [R6RS]
arithmetic flonums [R6RS]
bytevectors [R6RS]
conditions [R6RS]
enums [R6RS]
exceptions [R6RS]
files [R6RS]
hashtables [R6RS]
io ports [R6RS]
lists [R6RS]
mutable-pairs [R6RS]
mutable-strings [R6RS]
programs [R6RS]
records inspection [R6RS]
records procedural [R6RS]
records syntactic [R6RS]

lists [SRFI 1]
char-sets [SRFI 14]
streams [SRFI 41]
list-queues [SRFI 117]
hashtables [SRFI 125]
lazy-sequences [SRFI 127]
vectors [SRFI 133]
fixnums [SRFI 143]
generators-and-accumulators [SRFI 158]

numeric-vectors [SRFI 4]
basic-string-ports [SRFI 6]
records [SRFI 9]
strings [SRFI 13]
multi-dimensional-arrays [SRFI 25]
random-bits [SRFI 27]
basic-format-strings [SRFI 28]
conditions [SRFI 35]
parameters [SRFI 39]
eager-comprehensions [SRFI 42]
vectors [SRFI 43]
collections [SRFI 44]
arrays [SRFI 47]
intermediate-format-strings [SRFI 48]
rest-values [SRFI 51]
records [SRFI 57]
vicinities [SRFI 59]
integer-bits [SRFI 60]
arrays [SRFI 63]
octet-vectors [SRFI 66]
compare-procedures [SRFI 67]
basic-hash-tables [SRFI 69]
blobs [SRFI 74]
os-environment-variables [SRFI 98]
records [SRFI 99]
r6rs-hashtables [SRFI 126]
comparators [SRFI 128]
string-cursors [SRFI 130]
records [SRFI 131]
strings [SRFI 152]
predicate-combiners [SRFI 156]