[racket] fold/null-list? in srfi/1

From: Andreas Rottmann (a.rottmann at gmx.at)
Date: Sat Feb 26 16:46:58 EST 2011

Li-Ta Lo <lita.ollie at gmail.com> writes:

> Thanks.
> What does "%3a1" mean?
Short answer: its the percent-encoded form of ":1".

Long answer:

The SRFI library names for R6RS have been standardized in SRF-97[0] to
look like this: (srfi :<N> [<NAME>]).  In Racket's R6RS mode, you could

  (import (srfi :1))

or, alternatively, being a bit more descriptive:

  (import (srfi :1 lists))

However, from R5RS code, or plain Racket, `import' is not available, and
hence one must use the `require' form, which essentially does a
filename-based lookup, while R6RS's `import' (in its Racket
implementation) does percent-encode several characters if they occur in
parts of the library name, mostly to cater for filesystems that have
stupid restrictions (such as NTFS; it should be noted however, that even
on Unix would have trouble with a slash occuring in a library name
component).  The double-colon is one of those characters, thus the R6RS
library name `(srfi :1)' ends up being mapped to the relative path

For percent-encoding, see

For an amusing account of the ridiculous restrictions of NTFS (or rather
the Windows API layered above it), see

[0] http://srfi.schemers.org/srfi-97/srfi-97.html

Cheers, Rotty
Andreas Rottmann -- <http://rotty.yi.org/>

Posted on the users mailing list.