Re: Problem with type conflict style warning
Marco Antoniotti <[email protected]>
| Newsgroups | gmane.lisp.steel-bank.general |
|---|---|
| Message-ID | <CAG0Nw2nJPUYVrjwOPPxzreWf7CiM6PH8dp=W6+mQVyh2jv5PxA@mail.gmail.com> |
Hi Vectors DO look like #(l am a vector) in Common Lisp and lists like (I am a list). What is the question? MA Marco Antoniotti https://dcb.disco.unimib.it On Thu, 16 May 2024 at 22:07, steve gonedes <[email protected]> wrote: > > On 5/15/24 8:11 AM, syll-dev wrote: > > Hello > > > > I don't understand this style warning... > > > > Here is the code (problem with test1 only) : > > " > > (ql:quickload :alexandria) > > (use-package :alexandria) > > > > (defvar *l* '(1 2 3)) > > > > (defun test1 () > > (copy-sequence 'vector (reverse *l*))) > > > > (defun test2 () > > (copy-sequence 'vector *l*)) > > > > (defun test3 () > > (copy-sequence 'vector '(1 2 3))) > > > > (defun test4 () > > (let ((l '(1 2 3))) > > (copy-sequence 'vector l))) > > " > > > > And here is the result : > > " > > ; in: DEFUN TEST1 > > ; (COPY-SEQUENCE 'VECTOR (REVERSE *L*)) > > ; --> BLOCK IF COERCE > > ; ==> > > ; 1 > > ; > > ; caught STYLE-WARNING: > > ; Derived type of SB-C::X is > > ; (VALUES (OR LIST SB-KERNEL:EXTENDED-SEQUENCE) &OPTIONAL), > > ; conflicting with its asserted type > > ; VECTOR. > > ; See also: > > ; The SBCL Manual, Node "Handling of Types" > > " > > > > sbcl 2.4.1 and 2.4.4 (other versions not tested). > > > > I have the same problem with remove-if-not instead of reverse. > > > > Thank you > > > > syll > > > > > the function copy-sequence is in alexandria. > > > (defun copy-sequence (type sequence) > "Returns a fresh sequence of TYPE, which has the same elements as > SEQUENCE." > (if (typep sequence type) > (copy-seq sequence) > (coerce sequence type))) > > > Here are some easy ones. > > ;;;; coerce > > (defparameter lst (list 1 2 3)) > > (defun list-to-vector (lst) > (apply #'vector lst)) > > (defun list-to-vector-coerce (lst) > (coerce lst 'vector)) > > (list-to-vector-coerce lst) > => #(1 2 3) > > (reverse #(1 2 3)) > (reverse (list 1 2 3 4)) > > > (remove-if-not #'oddp #(1 2 3 4 5)) > (remove-if #'evenp (list 1 2 3 4 5)) > > => (1 3 5) > > I usually stay away from the external packages. it's a pain in the a$$ . > > The problem as I see it. vectors look like #(1 2 3 4) lists look like (1 > 2 3 4), > > notice the # > > > > > > > _______________________________________________ > Sbcl-help mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/sbcl-help > _______________________________________________ Sbcl-help mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sbcl-help