emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Predicate for true lists


From: Stefan Monnier
Subject: Re: Predicate for true lists
Date: Tue, 09 Apr 2019 11:33:59 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

> IWBNI this was also done for proper-list-p:
>
>   (byte-compile '(proper-list-p '(0)))
>   ;; => (byte-code "\300\301!\207" [proper-list-p (0)] 2)
>
> Is the following kosher?

> @@ -879,7 +879,8 @@ byte-optimize-memq
>  (put 'symbolp 'byte-optimizer 'byte-optimize-predicate)
>  (put 'stringp 'byte-optimizer 'byte-optimize-predicate)
>  (put 'string< 'byte-optimizer 'byte-optimize-predicate)
> -(put 'string-lessp 'byte-optimizer 'byte-optimize-predicate)
> +(put 'string-lessp  'byte-optimizer 'byte-optimize-predicate)
> +(put 'proper-list-p 'byte-optimizer 'byte-optimize-predicate)
>  
>  (put 'logand 'byte-optimizer 'byte-optimize-predicate)
>  (put 'logior 'byte-optimizer 'byte-optimize-predicate)

I think this is currently right.

> @@ -1160,8 +1161,8 @@ byte-optimize-set
>        make-list make-string make-symbol marker-buffer max member memq min
>        minibuffer-selected-window minibuffer-window
>        mod multibyte-char-to-unibyte next-window nth nthcdr number-to-string
> -      parse-colon-path plist-get plist-member
> -      prefix-numeric-value previous-window prin1-to-string propertize
> +         parse-colon-path plist-get plist-member prefix-numeric-value
> +         previous-window prin1-to-string proper-list-p propertize
>        degrees-to-radians
>        radians-to-degrees rassq rassoc read-from-string regexp-quote
>        region-beginning region-end reverse round

I think it'd be better to add a `side-effect-free` property rather than
add to this list.  We should be moving away from having this list in
byte-opt.el since that info can also be used when byte-opt is not loaded.

> diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
> index 8bbe6292d9..0e953dc96b 100644
> --- a/lisp/emacs-lisp/bytecomp.el
> +++ b/lisp/emacs-lisp/bytecomp.el
> @@ -3566,6 +3566,7 @@ byte-defop-compiler-1
>  
>  ;;####(byte-defop-compiler move-to-column    1)
>  (byte-defop-compiler-1 interactive byte-compile-noop)
> +(byte-defop-compiler-1 proper-list-p 1)

I don't think this is needed.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]