From: Eli Zaretskii <eliz@gnu.org>
To: Paul Pogonyshev <pogonyshev@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Arbitrary function: find the number(s) of expected arguments
Date: Sat, 19 Mar 2016 20:09:22 +0200 [thread overview]
Message-ID: <83y49e731p.fsf@gnu.org> (raw)
In-Reply-To: <CAG7BpaqRFpD=bup9uTf4ZX_BquX7K92GOVyWu60PzTEuDaOxaw@mail.gmail.com> (message from Paul Pogonyshev on Sat, 19 Mar 2016 17:51:39 +0100)
> Date: Sat, 19 Mar 2016 17:51:39 +0100
> From: Paul Pogonyshev <pogonyshev@gmail.com>
> Cc: emacs-devel@gnu.org
>
> Approximate patch, without documentation. If this is accepted, I can write documentation too. I submitted
> legal papers for FSF years ago.
Thanks. A few comments below. Let's wait for a few days to give
others a chance to comment.
> (func-arity 'car) (1 . 1)
> (func-arity 'caar) (1 . 1)
> (func-arity 'magit-log-all) (0 . 2)
> (func-arity 'format) (1 . many)
> (func-arity (lambda (&rest x))) (0 . many)
How about adding a few tests for this in test/ ?
> +Lisp_Object
> +get_byte_code_arity (Lisp_Object args_template)
> +{
> + if (INTEGERP (args_template))
> + {
> + ptrdiff_t at = XINT (args_template);
> + bool rest = (at & 128) != 0;
> + int mandatory = at & 127;
> + ptrdiff_t nonrest = at >> 8;
> +
> + return Fcons (make_number (mandatory), rest ? Qmany : make_number (nonrest));
> + }
> + else
> + error ("Unknown args template!");
It could also be a list (that was the old style). Maybe we should
also support that, in case some old byte-compiled file is used? I
think you already have the necessary code in lambda_arity.
> + if (SUBRP (function))
> + {
> + minargs = XSUBR (function)->min_args;
> + maxargs = XSUBR (function)->max_args;
> + result = Fcons (make_number (minargs),
> + maxargs == MANY ? Qmany
> + : maxargs == UNEVALLED ? Qunevalled
> + : make_number (maxargs));
> + }
We have sub-arity, so I think we should remove it and leave an alias
that will call this new function for backward compatibility. Having
both sounds redundant.
next prev parent reply other threads:[~2016-03-19 18:09 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-15 18:48 Arbitrary function: find the number(s) of expected arguments Paul Pogonyshev
2016-03-15 22:45 ` Davis Herring
2016-03-16 7:41 ` Paul Pogonyshev
2016-03-19 12:26 ` Paul Pogonyshev
2016-03-19 13:10 ` Eli Zaretskii
2016-03-19 13:42 ` Paul Pogonyshev
2016-03-19 13:54 ` Michael Heerdegen
2016-03-19 14:08 ` Eli Zaretskii
2016-03-19 15:20 ` Michael Heerdegen
2016-03-19 15:43 ` Eli Zaretskii
2016-03-19 15:57 ` Michael Heerdegen
2016-03-19 16:24 ` Eli Zaretskii
2016-03-19 17:43 ` Michael Heerdegen
2016-03-19 17:50 ` Eli Zaretskii
2016-03-19 17:59 ` Michael Heerdegen
2016-03-19 18:14 ` Eli Zaretskii
2016-03-19 16:14 ` Philipp Stephani
2016-03-19 16:27 ` Michael Heerdegen
2016-03-19 16:27 ` Eli Zaretskii
2016-03-19 16:30 ` Philipp Stephani
2016-03-19 16:32 ` Eli Zaretskii
2016-03-19 16:34 ` Philipp Stephani
2016-03-19 16:46 ` Philipp Stephani
2016-03-19 16:47 ` Eli Zaretskii
2016-03-19 17:16 ` Philipp Stephani
2016-03-19 17:48 ` Eli Zaretskii
2016-03-19 17:49 ` Philipp Stephani
2016-03-19 18:11 ` Eli Zaretskii
2016-03-19 18:35 ` Michael Heerdegen
2016-04-18 23:02 ` Davis Herring
2016-03-19 19:52 ` Stefan Monnier
2016-03-19 20:33 ` Eli Zaretskii
2016-03-19 22:43 ` Stefan Monnier
2016-03-26 15:55 ` Elias Mårtenson
2016-03-26 17:20 ` Stefan Monnier
2016-03-19 14:26 ` Philipp Stephani
2016-03-19 16:51 ` Paul Pogonyshev
2016-03-19 18:09 ` Eli Zaretskii [this message]
2016-03-19 19:32 ` Michael Heerdegen
2016-03-19 19:39 ` Eli Zaretskii
2016-03-19 20:59 ` Michael Heerdegen
2016-03-21 18:36 ` Paul Pogonyshev
2016-03-25 8:44 ` Eli Zaretskii
2016-03-25 16:16 ` Paul Pogonyshev
2016-03-25 16:35 ` Drew Adams
2016-03-25 17:16 ` Paul Pogonyshev
2016-03-25 18:19 ` Drew Adams
2016-03-25 18:28 ` Clément Pit--Claudel
2016-03-25 18:51 ` Use plain-text for mail [was: Arbitrary function: find the number(s) of expected arguments] Drew Adams
2016-03-25 18:57 ` Use plain-text for mail [ Lars Magne Ingebrigtsen
2016-03-25 19:49 ` Andreas Schwab
2016-03-26 1:12 ` Use plain-text for mail [was: Arbitrary function: find the number(s) of expected arguments] Yuri Khan
2016-03-25 17:39 ` Arbitrary function: find the number(s) of expected arguments Eli Zaretskii
2016-03-25 18:31 ` Drew Adams
2016-03-26 8:27 ` Eli Zaretskii
2016-03-26 11:42 ` Paul Pogonyshev
2016-04-02 9:48 ` Eli Zaretskii
[not found] ` <<83y49e731p.fsf@gnu.org>
2016-03-19 19:21 ` Drew Adams
2016-04-18 18:43 ` Davis Herring
2016-03-16 3:47 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83y49e731p.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=pogonyshev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.