In Racket, in the initial configuration of the reader when reading a file, "`#!` is an alias
for `#lang` followed by a space when `#!` is followed by alphanumeric ASCII, `+`, `-`, or
`_`." (See
<https://docs.racket-lang.org/reference/reader.html#%28part._parse-reader%29>.) [...] >
(Guile does not handle `#!r6rs` properly, presumably because of the legacy `#!`/`!#` block
comments. I think this should be a surmountable obstacle, though, especially since Guile does
support standard `#|`/`|#` block comments.)
‘#! ... !#’ comments aren't legacy; they exist to allow putting the shebang in the first
line of a script, and to pass additional arguments to the Guile interpreter (see:
(guile)The Top of a Script File) (*). As such, you can't just replace them with #| ...
|# (unless you patch the kernel to recognise "#| ..." as a shebang line). [...]
Furthermore, according to the kernel, #!r6rs would mean that the script needs
to be interpreted by a program named 'r6rs', but 'guile' is named 'guile', not
'r6rs'. (I assume this is in POSIX somewhere, though I couldn't find it.)
(This is an incompatibility between R6RS and any system that has shebangs.)