Re: SRFI-59, SLIB, and SCHEME_LIBRARY_PATH Aubrey Jaffer 12 Oct 2009 02:34 UTC

 | From: Derick Eddington <xxxxxx@gmail.com>
 | Date: Wed, 07 Oct 2009 13:23:45 -0700
 |
 | On Wed, 2009-10-07 at 13:34 -0400, Aubrey Jaffer wrote:
 | > SRFI-103 should have some text comparing SRFI-59 to SRFI-103 and
 | > explaining why the conventions of SRFI-59 are inadequate to your
 | > goals for SRFI-103.
 |
 | Thanks for pointing-out SRFI-59.  I just read it for the first
 | time.  I need more time and sleep to think about it, but right now
 | I'm thinking it probably is not a fit for this SRFI, and I probably
 | can succinctly describe why in the document of this SRFI.  I'll
 | return to this topic.  (Anyone, feel free to comment about this if
 | you want while I wait.)

I got a chance to look at SRFI-104, and SRFI-59 is more relevant
there.  There is no fundamental reason for file paths to be Unicode
strings.  The approach of SRFI-104 exposes to the programmer
file-system details like separators which would normally only be used
when gluing together paths.  Furthermore, several operating-systems'
file-systems have more than one possible separator:

(define vicinity:suffix?
  (let ((suffi
	 (case (software-type)
	   ((amiga)			'(#\: #\/))
	   ((macos thinkc)		'(#\:))
	   ((ms-dos windows atarist os/2) '(#\\ #\/))
	   ((nosve)			'(#\: #\.))
	   ((unix coherent plan9)	'(#\/))
	   ((vms)			'(#\: #\]))
	   (else
	    (slib:warn "require.scm" 'unknown
	    	       'software-type (software-type))
	    "/"))))
    (lambda (chr) (and (memv chr suffi) #t))))

Vicinities can be strings or some other datatype depending on the
hosting operating-system.  Vicinity operations are higher level than
string operations, incorporating the separators and file-system
conventions.  So I think SRFI-104 could benefit from building on
SRFI-59.