bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Gerd Möllmann
Subject: bug#65344: 28.2; Unable to Edebug cl-flet form which uses argument destructuring
Date: Thu, 17 Aug 2023 20:23:40 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.14.0

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.

That is, while 'defun' doesn't support this, 'cl-defun' (and, by extension,
'cl-flet') does.

Wow, that's nicely hidden. Thanks for digging that out! I would like to nominate this for the obscure feature of the week award.

@Eli:

I can see that implemented in cl--do-arglist, which calls itself recursively for such lists like in our case used as function parameters. cl--do-arglist is used (indirectly) by cl-flet, cl-labels, cl-defun, maybe others.

cl-defun's doc string even contains has hint

"...The full form of a Common Lisp function argument list is
...
VAR may be replaced recursively with an argument list for
destructuring,,,"

I don't think cl-flet/cl-labels have that.

@Michael:

Not remembering much about Edebug, but cl-defun seems to work with Edebug. So... :-)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]