On Sun, 21 Oct 2012 12:20:33 -0400 Matthew Mondor mm_lists@pulsar-zone.net wrote:
On Sat, 20 Oct 2012 22:19:46 +0400 Stas Boukarev stassats@gmail.com wrote:
The problem is that sys:function-lambda-list doesn't like macros or special operators anymore. Clearly, the name suggests that it takes functions, but it used to work on non-functions before this change: http://sourceforge.net/p/ecls/ecl/ci/b1ec23bce8a385251f14b278c080e22e459cc70...
It's possible to use (ext:get-annotation operator :lambda-list nil), but it returns a string for LET (ext:get-annotation 'let :lambda-list nil) => "(let ({var | (var [init])}*) {decl}* {form}*)"
Thanks for the details. Although I don't get errors for other common macros, I noticed that documentation is not shown for macros such as PUSH or PUSHNEW as well, which this also explains.
So I today had some time to do a small test and the following function indeed seems to work better in general.
(defimplementation arglist (name) (let ((arglist (ext:get-annotation name :lambda-list nil))) (if (or (null arglist) (stringp arglist)) :not-available arglist)))
Thanks again,