[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [External] : Re: Shrinking the C core
From: |
João Távora |
Subject: |
Re: [External] : Re: Shrinking the C core |
Date: |
Mon, 11 Sep 2023 22:10:33 +0100 |
On Mon, Sep 11, 2023 at 9:37 PM Tomas Hlavaty <tom@logand.com> wrote:
> not really, it seems that CL:SORT is a bad example
The example was for comparing to Emacs's lisp 'sort', where
IMO it's much easier to do
(cl-sort things-having-foo #'< :key #'foo)
than
(sort things-having-foo (lambda (a b) (< (foo a) (foo b))))
As to the advantage of @key key vs &optional key it is -- in my
eyes, at least -- that you already know its meaning from many other
functions.
> (btw why two functions and not extra stablep keyword argument?)
Why not? Maybe that makes passing sort and stable-sort to higher
order functions more practical?
> it could have been defined as:
>
> sort sequence predicate &optional key => sorted-sequence
> stable-sort sequence predicate &optional key => sorted-sequence
>
> and the same could be done in elisp which would be backwards compatible
Sure, but if according to your conjecture Elisp's grew a &optional
arg, why couldn't it grow a &key arg and be backwards compatible?
> > Let's look at a traditional Elisp macro define-minor-mode.
>
> the usual CL argument list does not seem to be able to express arguments
> of such shape
>
> it looks like whoever extended the original argument list did it
> "weirdly" using custom ad-hoc single-use argument list parser.
Quite likely the cl machinery wasn't available at the time... But yes,
Greenspun's 10th.
> > are maintenance hazards, the macro now accepts keyword arguments
>
> in CL, the arguments would normally be in a list before body, something
> like
>
> (define-minor-mode MODE ([KEYWORD VAL ... ]) [DOC] &rest BODY)
OK, but this is irrelevant. This is a macro, not a function.
For all practical purposes it was extended with keyword arguments.
In fact you could have used cl-lib's cl-destructuring-bind.
João
- Re: Shrinking the C core, (continued)
- Re: Shrinking the C core, João Távora, 2023/09/09
- RE: [External] : Re: Shrinking the C core, Drew Adams, 2023/09/08
- Re: [External] : Re: Shrinking the C core, Arthur Miller, 2023/09/09
- Re: [External] : Re: Shrinking the C core, Eli Zaretskii, 2023/09/09
- Re: [External] : Re: Shrinking the C core, Arthur Miller, 2023/09/09
- RE: [External] : Re: Shrinking the C core, Drew Adams, 2023/09/09
- Re: [External] : Re: Shrinking the C core, Richard Stallman, 2023/09/10
- Re: [External] : Re: Shrinking the C core, João Távora, 2023/09/11
- RE: [External] : Re: Shrinking the C core, Drew Adams, 2023/09/11
- Re: [External] : Re: Shrinking the C core, Tomas Hlavaty, 2023/09/11
- Re: [External] : Re: Shrinking the C core,
João Távora <=
- Re: [External] : Re: Shrinking the C core, Tomas Hlavaty, 2023/09/12
- Re: [External] : Re: Shrinking the C core, João Távora, 2023/09/12
- Re: [External] : Re: Shrinking the C core, Emanuel Berg, 2023/09/15
- Re: [External] : Re: Shrinking the C core, Eric S. Raymond, 2023/09/11
- Re: [External] : Re: Shrinking the C core, Arthur Miller, 2023/09/11
- Re: [External] : Re: Shrinking the C core, Gerd Möllmann, 2023/09/12
- Re: [External] : Re: Shrinking the C core, Arthur Miller, 2023/09/12
- Re: [External] : Re: Shrinking the C core, Arthur Miller, 2023/09/12
- Re: [External] : Re: Shrinking the C core, Emanuel Berg, 2023/09/12
- Re: [External] : Re: Shrinking the C core, Emanuel Berg, 2023/09/12