Subject: Re: bug#65344: 28.2; Unable to Edebug cl-flet form which uses argument destructuring

From: Eli Zaretskii <[email-masked]>
Date: Thu, 17 Aug 2023 18:56:29 +0300

> Cc: [email-masked]
> From: Brandon Irizarry <[email-masked]>
> Date: Thu, 17 Aug 2023 11:42:06 -0400
> 
> Destructured lambda-lists appear to be an Elisp extension to Common Lisp's argument notation,
> and the Emacs docs do mention them (though not in the Elisp manual; rather, it's in the CL-Lib
> manual).
> They even mention your point about such a lambda-list not being valid Common Lisp.
> 
> From the CL-Lib manual, 4.3.2 (Function Bindings):
> 
>      Functions defined by ‘cl-flet’ may use the full Common Lisp
>      argument notation supported by ‘cl-defun’; also, the function body
>      is enclosed in an implicit block as if by ‘cl-defun’.  *Note
>      Program Structure::.
> 
> Following the reference to Chapter 2, and heading into 2.1 (Argument Lists): 
> 
>    Argument lists support “destructuring”.  In Common Lisp,
> destructuring is only allowed with ‘defmacro’; this package allows it
> with ‘cl-defun’ and other argument lists as well. 

You may be right, but please don't rely on the documentation as if it
were a Gospel, or assume that it tells you all the truth and nothing
but the truth.  Our documentation sometimes omits stuff and other
times could allow interpretation that is factually incorrect.  IOW,
not everything the documentation says must be so, and not everything
it doesn't say doesn't exist or is false.

So when Gerd says he is not sure such lambda-lists are valid, I
suggest to trust Gerd more than you trust the docs.  The truth is, of
course, in the code, so if you find in the code evidence that such
forms are supported, that's a definitive conclusion.