[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] New convenience macros
From: |
Steve Youngs |
Subject: |
Re: [PATCH] New convenience macros |
Date: |
Fri, 24 Aug 2007 04:24:04 +1000 |
User-agent: |
Gnus/5.110007 (No Gnus v0.7) SXEmacs/22.1.7 (De Lorean, linux) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message
* Stefan Monnier <address@hidden> writes:
>> (if (and (featurep 'simple) (featurep 'xemacs)) a b)
>> warns about free variables for both `a' and `b'. So I think having the
> That's a valid criticism, but I fail to see how your macros would fare any
> better on the above kind of code. I.e. what code would you write instead of
> the above, using your macros?
(or (do-in-xemacs (when (featurep 'simple) a)) b)
Or...
(with-emacs-type 'xemacs (when (featurep 'simple) a))
(with-emacs-type 'emacs b)
Both only warn about `b' and the resulting bytecode has no mention of
`a'.
> PS: Of course while Johan's comment that the compiler could do
> better is true, the fact is that it currently doesn't and that
> noone has volunteered to improve it in this respect.
The same thing is happening in SXEmacs, BTW, with a similar optimisation
to Emacs' #'byte-optimize-featurep. My version looks like...
(defun byte-optimize-featurep (form)
(let ((str (prin1-to-string (cdr-safe form))))
(if (string-match #r"\s-+s?xemacs\(\s-\|)\)" str)
(byte-optimize-predicate form)
form)))
I had to string-match it to cater for (S)XEmacs' advanced featurep
form
(featurep '(and foo bar (not (or baz biz))))
At first I thought it was #'byte-optimize-predicate, but because you
guys don't use that and you do have the same problem, it can't be that.
I think the real problem lies in lisp's boolean function not being truly
boolean.
(or list_of_stuff) is traversed left-to-right and first non-nil wins.
#'and is the same, left-to-right, first nil wins (lose?), otherwise last
cons-car wins.
Sorry, I don't have a solution, but I'll certainly let you know if and
when I do. :-)
--
|---<Steve Youngs>---------------<GnuPG KeyID: A94B3003>---|
| SXEmacs - The only _______ you'll ever need. |
| Fill in the blank, yes, it's THAT good! |
|------------------------------------<address@hidden>---|
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.3 (GNU/Linux)
Comment: The SXEmacs Project <http://www.sxemacs.org>
Comment: Eicq - The SXEmacs ICQ Client <http://www.eicq.org/>
iEYEARECAAYFAkbN0MQACgkQHSfbS6lLMAPRPwCg2o8ZRzKBdye0uE6gC8cvrtlV
rc8AoInzF9abCMpo5TovqRdFW2UnMn97
=+Ds3
-----END PGP SIGNATURE-----
- [PATCH] New convenience macros, Steve Youngs, 2007/08/18
- Re: [PATCH] New convenience macros, Richard Stallman, 2007/08/19
- Re: [PATCH] New convenience macros, Steve Youngs, 2007/08/19
- Re: [PATCH] New convenience macros, Kim F. Storm, 2007/08/20
- Re: [PATCH] New convenience macros, Richard Stallman, 2007/08/20
- Re: [PATCH] New convenience macros, Steve Youngs, 2007/08/23
- Re: [PATCH] New convenience macros, Johan Bockgård, 2007/08/23
- Re: [PATCH] New convenience macros, Stefan Monnier, 2007/08/23
- Re: [PATCH] New convenience macros,
Steve Youngs <=
- Re: [PATCH] New convenience macros, Stefan Monnier, 2007/08/23
- Re: [PATCH] New convenience macros, Steve Youngs, 2007/08/26
- Re: [PATCH] New convenience macros, Richard Stallman, 2007/08/26
- Re: [PATCH] New convenience macros, Steve Youngs, 2007/08/26
Re: [PATCH] New convenience macros, Stefan Monnier, 2007/08/20