unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Helmut Eller <eller.helmut@gmail.com>
To: emacs-devel@gnu.org
Subject: Re: CL package serious deficiencies
Date: Sat, 11 Feb 2012 00:56:48 +0100	[thread overview]
Message-ID: <m262fe6y4f.fsf@gmail.com> (raw)
In-Reply-To: jwv7gzu34z8.fsf-monnier+emacs@gnu.org

* Stefan Monnier [2012-02-10 18:51] writes:

>> At the risk of stating the obvious: we could define compiler-macros for
>> keyword-using functions like position and automatically rewrite all uses
>> to a keyword-less implementation like cl-position.  Then everybody could
>> use the prefix-less version without the need to (require 'cl) at
>> runtime.
>
> The problem with this approach is that you end up having to first
> implement the function (complex because of all the args you have to
> handle), then re-implement it all as a compiler-macro (which happens to
> be more complex and bug-prone and more difficult to debug, usually).
> In the end, a lot of complexity, lots of bugs, difficult to maintain,
> and the function itself is dog-slow because it has to handle all the
> weird combinations.
> Even a pure macro makes more sense at that point.
>
> I much prefer a leaner approach where instead of (delete-if #'foo :key #'bar)
> you have to write (delete-if (lambda (x) (foo (bar x)))).

This transformation can be done automatically by a compiler-macro.

> As for :start :end :from-end and :count, I've never even seen them used
> with delete-if.

Well, dropping the keyword args of delete-if would not be backward
compatible and quite a useless move.  And the :count argument is pretty
cool; surely beats stuff like byte-compile-delete-first.

> The :key in `sort*' makes sense.  Not in `delete-if'.

Sure it does.  Here's an example for remove-if with :key arg:
https://raw.github.com/nablaone/slime/7dfadd8716d2542d9290231b79467df803e8803f/slime.el

Helmut




  parent reply	other threads:[~2012-02-10 23:56 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-06 14:18 CL package serious deficiencies egnarts-ms
2012-02-06 21:08 ` Stefan Monnier
2012-02-06 21:53   ` Drew Adams
2012-02-07  3:02     ` Stefan Monnier
2012-02-07 12:04       ` egnarts-ms
2012-02-07 17:36         ` Stefan Monnier
2012-02-08 13:15           ` egnarts-ms
2012-02-08 19:07             ` Stefan Monnier
2012-02-07 12:29     ` egnarts-ms
2012-02-07 18:43     ` Nix
2012-02-07 19:11       ` Lennart Borgman
2012-02-07 19:15         ` Juanma Barranquero
2012-02-07 20:54           ` Lennart Borgman
2012-02-07 21:03         ` John Wiegley
2012-02-07 21:06         ` Nix
2012-02-07 21:08           ` Lennart Borgman
2012-02-07 21:10             ` Nix
2012-02-07 21:12               ` Lennart Borgman
2012-02-07 21:23                 ` Nix
2012-02-07 21:29                   ` Lennart Borgman
2012-02-07 21:30                     ` Nix
2012-02-07 21:32                   ` Glenn Morris
2012-02-07 21:34                   ` Daniel Colascione
2012-02-07 21:42                     ` Tom Tromey
2012-02-08  1:53                       ` Leo
2012-02-07 22:16                     ` Alan Mackenzie
2012-02-07 22:19                       ` Nix
2012-02-08 13:28                     ` Richard Stallman
2012-02-08 15:00                       ` Tom Tromey
2012-02-09  6:29                         ` Richard Stallman
2012-02-09 14:23                           ` Eric Schulte
2012-02-10 15:44                             ` Richard Stallman
2012-02-10 18:36                               ` Tom Tromey
2012-02-10 15:52                             ` Tom Tromey
2012-02-10 16:23                               ` Drew Adams
2012-02-10 16:42                               ` Ted Zlatanov
2012-02-09  6:30                         ` Richard Stallman
2012-02-09 13:56                           ` Ted Zlatanov
2012-02-10 15:44                             ` Richard Stallman
2012-02-10 18:34                               ` Tom Tromey
2012-02-10 15:48                           ` Tom Tromey
2012-02-10 18:29                             ` Stefan Monnier
2012-02-08  2:07                   ` Stephen J. Turnbull
2012-02-07 22:41               ` Glenn Morris
2012-02-07 23:10                 ` Nix
2012-02-08 13:42                   ` Eric Schulte
2012-02-08 13:46                     ` Lennart Borgman
2012-02-08 13:51                       ` Eric Schulte
2012-02-08 15:29                         ` Lennart Borgman
2012-02-08 15:39                           ` Eric Schulte
2012-02-08 15:43                             ` Lennart Borgman
2012-02-08 14:26                     ` Drew Adams
2012-02-08 13:15         ` Teemu Likonen
2012-02-09  7:33           ` spam- or registry-related things in Gnus need cl at run-time? (was: CL package serious deficiencies) Reiner Steib
2012-02-09 16:39             ` spam- or registry-related things in Gnus need cl at run-time? Teemu Likonen
2012-02-07 23:48       ` CL package serious deficiencies Stefan Monnier
2012-02-07 23:52         ` Nix
2012-02-08  0:10           ` Lennart Borgman
2012-02-08  0:15             ` Nix
2012-02-08  1:51               ` Stefan Monnier
2012-02-08 23:43                 ` Nix
2012-02-09 21:34                   ` Stefan Monnier
2012-02-08  2:13           ` Stephen J. Turnbull
2012-02-08  2:19             ` Lennart Borgman
2012-02-08  4:23               ` Stephen J. Turnbull
2012-02-08 11:00                 ` Lennart Borgman
2012-02-08 17:42           ` Richard Stallman
2012-02-08 19:54             ` Stefan Monnier
2012-02-08  0:38         ` Daniel Colascione
2012-02-08  1:32           ` Lennart Borgman
2012-02-08  1:53           ` Stefan Monnier
2012-02-08  2:26             ` Daniel Colascione
2012-02-08 22:28       ` Lars Ingebrigtsen
2012-02-08 22:32         ` Lennart Borgman
2012-02-08 23:35         ` Nix
2012-02-09 19:42           ` Richard Stallman
2012-02-09 19:46             ` Nix
2012-02-10  1:09         ` John Wiegley
2012-02-10 14:38         ` Stefan Monnier
2012-02-10 15:08           ` Juanma Barranquero
2012-02-10 15:35             ` Drew Adams
2012-02-10 18:15               ` Stefan Monnier
2012-02-10 18:21                 ` Drew Adams
2012-02-10 15:24           ` Lars Ingebrigtsen
2012-02-10 18:24             ` Stefan Monnier
2012-02-10 18:26               ` Lars Ingebrigtsen
2012-02-10 18:47               ` Johan Bockgård
2012-02-10 17:12           ` Helmut Eller
2012-02-10 18:51             ` Stefan Monnier
2012-02-10 18:55               ` Lars Ingebrigtsen
2012-02-10 19:08               ` Teemu Likonen
2012-02-11 13:25                 ` Juanma Barranquero
2012-02-11 16:56                   ` Johan Bockgård
2012-02-11 22:33                     ` Juanma Barranquero
2012-02-12  4:41                 ` Stefan Monnier
2012-02-12 15:53                   ` Teemu Likonen
2012-02-12 16:52                     ` Stefan Monnier
2012-02-12 16:55                     ` Stefan Monnier
2012-02-10 23:56               ` Helmut Eller [this message]
2012-02-12  4:47                 ` Stefan Monnier
2012-02-12 17:39                   ` Helmut Eller
2012-02-12 18:15                     ` Stefan Monnier
2012-02-12 18:58                       ` Helmut Eller
2012-02-19 12:52         ` Dimitri Fontaine

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m262fe6y4f.fsf@gmail.com \
    --to=eller.helmut@gmail.com \
    --cc=emacs-devel@gnu.org \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).