Hi, Investigating, I've found this:
--8<---------------cut here---------------start------------->8--- trace: | (_ #<procedure 7fc0c55af068 at ice-9/r6rs-libraries.scm:104:5 (n rest version)> (160 (u8) ())) trace: | (_ 160 (u8) ()) trace: | | (syntax->datum 160) trace: | | (strip 160) trace: | | | (syntax? 160) trace: | | | #f trace: | | 160 trace: | | (number->string 160) trace: | | "160" trace: | | (string-append "srfi-" "160") trace: | | "srfi-160" trace: | | (datum->syntax #<syntax:r6rs-libraries.scm:92:34 srfi> srfi-160) trace: | | | (syntax-wrap #<syntax:r6rs-libraries.scm:92:34 srfi>) trace: | | | ((top) #(ribcage #(n rest version) #((top) (top) (top)) #("l-680b775fb37a463-160b" "l-680b775fb37a463-160c" "l-680b775fb37a463-160d")) #(ribcage (module-for-each/nonlocal # make-srfi-n # …) …) …) trace: | | | (syntax-module #<syntax:r6rs-libraries.scm:92:34 srfi>) trace: | | | (hygiene guile) trace: | | | (source-properties srfi-160) trace: | | | () trace: | | (make-syntax srfi-160 ((top) #(ribcage #(n rest version) #((top) (top) (top)) #("l-680b775fb37a463-160b" "l-680b775fb37a463-160c" "l-680b775fb37a463-160d")) #(ribcage (# # make-srfi-n # # …) …) …) …) trace: | | #<syntax srfi-160> trace: | | ($sc-dispatch (u8) ()) trace: | | | (syntax? (u8)) trace: | | | #f trace: | | (match* (u8) () (()) () #f) trace: | | #f trace: | | ($sc-dispatch (u8) (any . each-any)) trace: | | | (syntax? (u8)) trace: | | | #f trace: | | (match* (u8) (any . each-any) (()) () #f) trace: | | | (match () each-any (()) () #f) trace: | | | | (syntax? ()) trace: | | | | #f trace: | | | (match* () each-any (()) () #f) trace: | | | | (match-each-any () (()) #f) trace: | | | | () trace: | | | (()) trace: | | (match u8 any (()) (()) #f) trace: | | | (source-wrap u8 (()) #f #f) trace: | | | u8 trace: | | (u8 ()) trace: | | (_ #<procedure 7fc0c108e1e0 at ice-9/r6rs-libraries.scm:93:7 (name rest)> (u8 ())) trace: | | (_ u8 ()) trace: | | | (append () (())) trace: | | | (()) --8<---------------cut here---------------end--------------->8--- This corresponds to this source: --8<---------------cut here---------------start------------->8--- (syntax-case import-spec (library only except prefix rename srfi) ;; (srfi :n ...) -> (srfi srfi-n ...) ;; (srfi n ...) -> (srfi srfi-n ...) ((library (srfi n rest ... (version ...))) (srfi-name? #'(srfi n rest ...)) (let ((srfi-n (make-srfi-n #'srfi #'n))) (resolve-r6rs-interface (syntax-case #'(rest ...) () (() #`(library (srfi #,srfi-n (version ...)))) ((name rest ...) ;; SRFI 97 says that the first identifier after the `n' ;; is used for the libraries name, so it must be ignored. #`(library (srfi #,srfi-n rest ... (version ...)))))))) ... --8<---------------cut here---------------end--------------->8--- Notice the comment mentioning that the first identifier following 'n' is ignored. That seems wrong, at least in the context of R7RS libraries. -- Thanks, Maxim