On Fri, 05 May 2023 16:35 Ludovic Courtès <civo...@toot.aquilenet.fr> wrote:
> (call-with-input-string "(. wtf?)" read)
>
> ⇒ wtf?
>
> #Guile #Scheme

Hey!^W  Sorry...

Dear Guile developer,

your tweet made me deeply concerned.  Is it a sign that this behaviour is going 
to be ‘fixed’ eventually?

Besides actually being (imho) the only right thing to do: explanation below 
aside, just compare:
#+begin_src scheme
(define (fu bar) ...)
(λ (bar) ...)
(define (fu . quux) ...)
(λ (. quux) ...)
#+end_src

it is required for compatibility with elisp; where itʼs not only observed 
de-facto:
#+begin_src elisp
'(. foo)
;; ⇒ foo
#+end_src

but explicitly documented in (info "(elisp) Dotted Pair Notation") as well:
#+begin_quote
   As a somewhat peculiar side effect of ‘(a b . c)’ and ‘(a . (b . c))’
being equivalent, for consistency this means that if you replace ‘b’
here with the empty sequence, then it follows that ‘(a . c)’ and ‘(a . (
. c))’ are equivalent, too.  This also means that ‘( . c)’ is equivalent
to ‘c’, but this is seldom used.
#+end_quote



Reply via email to