Re: (MEMBER ...) with literal symbol(s)

David Scherfgen via Maxima-discuss <[email protected]> Mon, 5 May 2025 19:31:46 +0200
Newsgroups gmane.comp.mathematics.maxima.general,gmane.lisp.gcl.devel
Message-ID <CAMTHLKgUkzwzWLq_SjsnGhT+UuqvMtGYcngqYQv0PvMRAL=iWQ@mail.gmail.com>
--===============7952386591091155800==
Content-Type: multipart/alternative; boundary="0000000000000719f4063466e2fe"

--0000000000000719f4063466e2fe
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On that note, I found something strange. In GCL 2.7.1, (member x '(a b c d
e f)) is often much faster than the same with :test #'eq. It depends on
whether the element is a member of the list or not, and at which position
it is.

Maybe something is wrong with my testing? Camm, maybe you know what's
happening there? This is what I did:

(defun f (x) (member x '(a b c d e f)))
(defun g (x) (member x '(a b c d e f) :test #'eq))
(compile 'f)
(compile 'g)

(defun test-f (x n) (dotimes (i n) (f x)))
(defun test-g (x n) (dotimes (i n) (g x)))
(compile 'test-f)
(compile 'test-g)

(time (test-f 'a 10000000000)) -> 13.09 s
(time (test-g 'a 10000000000)) -> 15.21 s -> *:test #'eq is slower!*

... timings increase slightly when testing for 'b, 'c, 'd - not surprising,
as larger parts of the list have to be searched.
But then, when testing for 'e or 'f, things start to turn around:

(time (test-f 'e 10000000000)) -> 15.35 s -> *suddenly much slower!*
(time (test-g 'e 10000000000)) -> 15.36 s

(time (test-f 'f 10000000000)) -> 17.52 s -> *even slower!*
(time (test-g 'f 10000000000)) -> 15.4 s -> *now :test #'eq is faster!*

Testing for a member not in the list:

(time (test-f 'g 10000000000)) -> 13.12 s -> *faster than searching for 'e,
even though it has to search the entire list?!*
(time (test-g 'g 10000000000)) -> 15.3 s

I thought that maybe it is related to member returning a sublist and not
just t or nil.
So I defined f and g as follows, to not return the sublist returned by
member, but only t or nil:

(defun f (x) (if (member x '(a b c d e f)) t))
(defun g (x) (if (member x '(a b c d e f) :test #'eq) t))

Then f gets much slower and g gets much faster.

This is very confusing.

Am Mo., 5. Mai 2025 um 18:59 Uhr schrieb Camm Maguire <
[email protected]>:

> Greetings, and thanks for your feedback!
>
> Stavros Macrakis <[email protected]> writes:
>
> > Assuming that clause 2 applies to the loop in member
> >
> >  2) GCL will unroll loops over constant (and non-constant) lists up to
> *src-loop-unroll-limit* (default 20)
> >
> > then this whole discussion is moot, since the vast majority (95%) of
> constant lists of symbols are length 6 or less, and those are the
> often-used cases.
> >
>
> Unrolling the loop just allows the compiler to easily see the type of
> each element one at a time.  But as this is later than the decision to
> compute the type integer on x, and as one does not know the unroll will
> succeed until it does, it will not help in avoiding the former unless
> there is an additional pass, or a backup/retry.  Backup/retries can be
> exponentially bad in compile time in egregious nested cases.
>
> > Re
> >
> >  5) GCL will not attempt to aggregate the types across all elements of =
a
> list, i.e. this whole list is of type symbol, so pull that out of the loo=
p
> as well.  This
> >  seems ill-advised and unpractical to me at least at the moment.
> >
> > I'm surprised by this, and don't understand why it would be "ill-advise=
d
> and unpractical", but as I say it's moot if (2) is applied.
>
> The cleanest optimizations are lisp code inserts in the function source
> which make sense in the generic case, and can be pruned by the compiler
> in special cases.  Setting separate compiler-macros, inline property
> strings, or special compiler handler functions for a given function is
> fragile and error prone.  We've made a lot of progress cleaning up a lot
> of the latter.
>
> It would be easy to add a check on the list alongside the check on x in
> the source to prune this extra branch in the test, but at the cost of an
> extra traversal of the list in the generic case, which seems like a
> loser.
>
> >
> >  3) GCL will pull the type-of on unknown x out of the loop and use it a=
s
> a key to a switch table inside the loop.
> >
> > Of course, this is unnecessary if arg 2 is a list of symbols, since eq
> applies to all data types. In some styles of code, it might be faster to
> test (and (symbolp x) (or
> > (eq x 'c1) (eq x 'c2) ...)), but in the case of Maxima this will almost
> always slow things down rather than speed them up.
> >
> > The expression (member x '(a b c...) :test #'eq) strikes me as verbose
> and pedantic. Code should be easily readable by humans, and the extra
> clause is clearly
> > semantically unnecessary. memq is a bit better, but shouldn't be
> necessary (there is nothing wrong with writing functions which encapsulat=
e
> some useful piece
> > of Common Lisp functionality). If a particular compiler chooses not to
> optimize that idiom, I'd say that's the compiler's problem. But according
> to Camm's
> > explanation, GCL does optimize it. So there's no issue.
>
> I agree in preferring the simple expression and relying on the compiler
> to do the right thing.  I cannot think at the moment of any instance in
> GCL's own code which specifies :test #'eq.
>
> Take care,
>
> >
> >              -s
> >
> > On Sat, May 3, 2025 at 6:37=E2=80=AFAM Camm Maguire <camm@maguirefamily=
.org>
> wrote:
> >
> >  Greetings!
> >
> >  This is what is happening, with a twist.
> >
> >  Since we don't know that *all* elements of the list will allow eql->eq
> >  ahead of time (optimization 5), one runtime check on x is done outside
> >  the loop to see if we can do eql->eq on that basis, e.g. an integer x0
> >  is computed.  The test then becomes (if x0 (eq a b) (eql a b)), and th=
en
> >  eql goes to eq based on b anyway, so at the C level we have (if x0 (eq=
 a
> >  b) (eq a b)).  All eql code in the example you cite has been eliminate=
d.
> >  We have no optimization trying to recognize identical branches and
> >  eliminate the if.  So instead of one machine instruction, you have two=
,
> >  switch x0, (eq a b).
> >
> >  Take care,
> >
> >  David Scherfgen via Maxima-discuss
> >  <[email protected]> writes:
> >
> >  > Thanks for the explanation, Camm.
> >  >
> >  > Optimizations 2) and 1) should suffice for this very common case in
> Maxima's source to be optimized in GCL (just like SBCL does), optimizatio=
n
> 5) shouldn't
> >  be
> >  > necessary.
> >  >
> >  > Let's take the example (member x '(a b c)), i.e. unknown x and a lis=
t
> of literal symbols.
> >  >
> >  > Via 2), GCL should unroll that into (or (eql x 'a) (eql x 'b) (eql x
> 'c)).
> >  >
> >  > Via 1), GCL should replace each of the (eql ...) with (eq ...), as
> one of the arguments is a literal symbol.
> >  >
> >  > But that doesn't seem to be what's happening, right?
> >  >
> >  > Best regards
> >  > David Scherfgen
> >  >
> >  > Camm Maguire <[email protected]> schrieb am Fr., 2. Mai 2025,
> 22:28:
> >  >
> >  >  Greetings!  Glad you noticed this.
> >  >
> >  >  This touches on 4 optimizations currently in place in the compiler,
> and
> >  >  one that is not.
> >  >
> >  >  1) GCL will optimize eql to eq when it can infer the types on eithe=
r
> arg
> >  >  that would permit this.
> >  >
> >  >  2) GCL will unroll loops over constant (and non-constant) lists up =
to
> >  >  *src-loop-unroll-limit* (default 20)
> >  >
> >  >  3) GCL will pull the type-of on unknown x out of the loop and use i=
t
> as
> >  >  a key to a switch table inside the loop.
> >  >
> >  >  4) GCL will replace the loop entirely with its known result when
> >  >  possible.
> >  >
> >  >  5) GCL will not attempt to aggregate the types across all elements
> of a
> >  >  list, i.e. this whole list is of type symbol, so pull that out of t=
he
> >  >  loop as well.  This seems ill-advised and unpractical to me at leas=
t
> at
> >  >  the moment.
> >  >
> >  >  You can get more info on what is happening by setting
> >  >  compiler::*annotate* to t before running disassemble.  If you only
> want
> >  >  the C code and not the disassembly, (setq
> >  >  compiler::*disassemble-objdump* nil).
> >  >
> >  >  You can also see the lisp source of member:
> >  >
> >  >  ('si::fle is shorthand for 'function-lambda-expression)
> >  >
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  (si::fle 'member)
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  (LAMBDA
> >  >   (SYSTEM::ITEM LIST &KEY SYSTEM::KEY SYSTEM::TEST SYSTEM::TEST-NOT)
> >  >   (DECLARE (OPTIMIZE (SAFETY 1))) (CHECK-TYPE LIST PROPER-LIST)
> >  >   (CHECK-TYPE SYSTEM::TEST (OR NULL SYSTEM::FUNCTION-DESIGNATOR))
> >  >   (CHECK-TYPE SYSTEM::TEST-NOT (OR NULL SYSTEM::FUNCTION-DESIGNATOR)=
)
> >  >   (CHECK-TYPE SYSTEM::KEY (OR NULL SYSTEM::FUNCTION-DESIGNATOR))
> >  >   (BLOCK
> >  >    MEMBER
> >  >    (LET*
> >  >     ((#:G568
> >  >       (COERCE (OR SYSTEM::TEST SYSTEM::TEST-NOT #'EQL) 'FUNCTION))
> >  >      (#:G569
> >  >       (IF
> >  >        (EQ #:G568 #'EQ) 0
> >  >        (IF
> >  >         (EQ #:G568 #'EQL) 1
> >  >         (IF
> >  >          (EQ #:G568 #'EQUAL) 2
> >  >          (IF (EQ #:G568 #'EQUALP) 3 (IF (EQ #:G568 #'FUNCALL) 4
> 5))))))
> >  >      (#:G570 (IF SYSTEM::KEY (COERCE SYSTEM::KEY 'FUNCTION)))
> >  >      (#:G570 (IF (NOT (EQ #:G570 #'IDENTITY)) #:G570)))
> >  >     (AND
> >  >      SYSTEM::TEST SYSTEM::TEST-NOT
> >  >      (ERROR "both test and test not supplied"))
> >  >     (LET*
> >  >      NIL
> >  >      (LABELS
> >  >       ((SYSTEM::KEY
> >  >         (SYSTEM::X) (IF #:G570 (FUNCALL #:G570 SYSTEM::X) SYSTEM::X)=
)
> >  >        (SYSTEM::TEST-NO-KEY
> >  >         (SYSTEM::X SYSTEM::Y)
> >  >         (IF
> >  >          (CASE
> >  >           #:G569 (0 (EQ SYSTEM::X SYSTEM::Y))
> >  >           (1 (EQL SYSTEM::X SYSTEM::Y)) (2 (EQUAL SYSTEM::X
> SYSTEM::Y))
> >  >           (3 (EQUALP SYSTEM::X SYSTEM::Y))
> >  >           (4 (FUNCALL SYSTEM::X SYSTEM::Y))
> >  >           (OTHERWISE (FUNCALL #:G568 SYSTEM::X SYSTEM::Y)))
> >  >          (NOT SYSTEM::TEST-NOT) SYSTEM::TEST-NOT))
> >  >        (SYSTEM::TEST
> >  >         (SYSTEM::X SYSTEM::Y)
> >  >         (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))))
> >  >       (DECLARE (IGNORABLE #'SYSTEM::TEST))
> >  >       (IF
> >  >        (CASE
> >  >         #:G569
> >  >         ((1 2 3)
> >  >          (OR
> >  >           (CASE
> >  >            #:G569 (1 (EQL-IS-EQ SYSTEM::ITEM))
> >  >            (2 (EQUAL-IS-EQ SYSTEM::ITEM))
> >  >            (3 (EQUALP-IS-EQ SYSTEM::ITEM))))))
> >  >        (SETQ #:G569 0))
> >  >       (MACROLET
> >  >        ((SYSTEM::COLLECT
> >  >          (SYSTEM::A SYSTEM::B SYSTEM::C)
> >  >          (LIST
> >  >           'LET (LIST (LIST 'SYSTEM::TMP SYSTEM::A))
> >  >           (LIST
> >  >            'SETQ SYSTEM::C
> >  >            (LIST
> >  >             'IF SYSTEM::C
> >  >             (LIST 'CDR (LIST 'RPLACD SYSTEM::C 'SYSTEM::TMP))
> >  >             (LIST 'SETQ SYSTEM::B 'SYSTEM::TMP))))))
> >  >        (IF
> >  >         (NOT
> >  >          (MAPL
> >  >           (LAMBDA
> >  >            (SYSTEM::X)
> >  >            (IF
> >  >             (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))
> >  >             (RETURN-FROM MEMBER SYSTEM::X)))
> >  >           LIST))
> >  >         NIL)))))))
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >
> >  >  Some examples:
> >  >
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  Unknown x & y, (disassemble '(lambda (x y) (member x y))
> >  >  loop not unrolled, type-of x pulled out, eql used unless runtime
> >  >  determination of x allows eq.
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  static object LI1__CMP_ANON___gazonk_2205667_0(register object
> V3,object V4)
> >  >  {        VMB1 VMS1 VMV1
> >  >          /*(MEMBER X Y)*/
> >  >          {register fixnum V5;
> >  >          V5=3D 1;
> >  >          /*(EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          switch(/* (APPLIED TP4 SYSTEM::X) */tp4(V3)){
> >  >          case -1:
> >  >          goto T7;
> >  >  T7:;
> >  >          goto T5;
> >  >
> >  >          case 1:
> >  >          goto T8;
> >  >  T8:;
> >  >          case 2:
> >  >          goto T9;
> >  >  T9:;
> >  >          case 3:
> >  >          goto T10;
> >  >  T10:;
> >  >          case 4:
> >  >          goto T11;
> >  >  T11:;
> >  >          case 5:
> >  >          goto T12;
> >  >  T12:;
> >  >          case 6:
> >  >          goto T13;
> >  >  T13:;
> >  >          goto T3;
> >  >
> >  >          default:
> >  >          goto T14;
> >  >  T14:;
> >  >          goto T5;
> >  >
> >  >          goto T3;
> >  >          }
> >  >          goto T3;
> >  >
> >  >          /* END (EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          goto T5;
> >  >  T5:;
> >  >          V5=3D 0;
> >  >          goto T2;
> >  >
> >  >          goto T3;
> >  >  T3:;
> >  >          goto T2;
> >  >  T2:;
> >  >          /*(MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          /*(SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          {register object V6;
> >  >          V6=3D (V4);
> >  >          goto T24;
> >  >  T24:;
> >  >          if(((V6))=3D=3DCnil){
> >  >          goto T26;
> >  >          }
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V5){
> >  >          case 0:
> >  >          goto T36;
> >  >  T36:;
> >  >          if(!(((V3))=3D=3D(/* (SYSTEM::KEY SYSTEM::Y) */(V6)->c.c_ca=
r))){
> >  >          goto T33;
> >  >          }
> >  >          goto T34;
> >  >
> >  >          case 1:
> >  >          goto T37;
> >  >  T37:;
> >  >          if(!(eql((V3),/* (SYSTEM::KEY SYSTEM::Y) */(V6)->c.c_car)))=
{
> >  >          goto T33;
> >  >          }
> >  >          goto T34;
> >  >
> >  >          goto T33;
> >  >          }
> >  >          goto T33;
> >  >
> >  >          goto T34;
> >  >  T34:;
> >  >          goto T32;
> >  >
> >  >          goto T33;
> >  >  T33:;
> >  >          goto T30;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T32;
> >  >  T32:;
> >  >          {object V8 =3D (V6);
> >  >          VMR1(V8);}
> >  >          goto T30;
> >  >  T30:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          {object V9;
> >  >          V9=3D /* (APPLIED CDR SYSTEM::X) */V6->c.c_cdr;
> >  >          V6=3D (V9);
> >  >          goto T24;
> >  >          }
> >  >          goto T26;
> >  >  T26:;
> >  >          goto T22;
> >  >
> >  >          goto T22;
> >  >          }
> >  >          /* END (SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          goto T22;
> >  >  T22:;
> >  >          if(((V4))=3D=3DCnil){
> >  >          goto T20;
> >  >          }
> >  >          /* END (SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /* END (MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          goto T17;
> >  >
> >  >          goto T20;
> >  >  T20:;
> >  >          {object V10 =3D Cnil;
> >  >          VMR1(V10);}
> >  >          goto T17;
> >  >  T17:;
> >  >          {object V11 =3D Cnil;
> >  >          VMR1(V11);}}
> >  >          /* END (MEMBER X Y)*/
> >  >  }
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  symbol x, unknown y, (disassemble '(lambda (x y) (declare (symbol
> x)) (member x y)))
> >  >  loop not unrolled, eql->eq, no typing
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  static object LI1__CMP_ANON___gazonk_2205667_0(register object
> V3,object V4)
> >  >  {        VMB1 VMS1 VMV1
> >  >          /*(MEMBER X Y)*/
> >  >          /*(MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          /*(SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          {register object V5;
> >  >          V5=3D (V4);
> >  >          goto T9;
> >  >  T9:;
> >  >          if(((V5))=3D=3DCnil){
> >  >          goto T11;
> >  >          }
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          if(!(((V3))=3D=3D(/* (SYSTEM::KEY SYSTEM::Y) */(V5)->c.c_ca=
r))){
> >  >          goto T18;
> >  >          }
> >  >          goto T17;
> >  >
> >  >          goto T18;
> >  >  T18:;
> >  >          goto T15;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T17;
> >  >  T17:;
> >  >          {object V7 =3D (V5);
> >  >          VMR1(V7);}
> >  >          goto T15;
> >  >  T15:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          {object V8;
> >  >          V8=3D /* (APPLIED CDR SYSTEM::X) */V5->c.c_cdr;
> >  >          V5=3D (V8);
> >  >          goto T9;
> >  >          }
> >  >          goto T11;
> >  >  T11:;
> >  >          goto T7;
> >  >
> >  >          goto T7;
> >  >          }
> >  >          /* END (SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          goto T7;
> >  >  T7:;
> >  >          if(((V4))=3D=3DCnil){
> >  >          goto T5;
> >  >          }
> >  >          /* END (SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /* END (MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          goto T2;
> >  >
> >  >          goto T5;
> >  >  T5:;
> >  >          {object V9 =3D Cnil;
> >  >          VMR1(V9);}
> >  >          goto T2;
> >  >  T2:;
> >  >          {object V10 =3D Cnil;
> >  >          VMR1(V10);}
> >  >          /* END (MEMBER X Y)*/
> >  >  }
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  Unknown x, known list, (disassemble '(lambda (x y z w)  (member x
> (list y z w))))
> >  >  loop unrolled, type-of x pulled out
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  static object LI1__CMP_ANON___gazonk_2205667_1(object V5,object
> V6,object V7,object V8)
> >  >  {        VMB1 VMS1 VMV1
> >  >          /*(MEMBER X (LIST Y Z ...))*/
> >  >          {object V9;
> >  >          V9=3D list(3,(V6),(V7),(V8));
> >  >          {fixnum V10;
> >  >          V10=3D 1;
> >  >          /*(EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          switch(/* (APPLIED TP4 SYSTEM::X) */tp4(V5)){
> >  >          case -1:
> >  >          goto T8;
> >  >  T8:;
> >  >          goto T6;
> >  >
> >  >          case 1:
> >  >          goto T9;
> >  >  T9:;
> >  >          case 2:
> >  >          goto T10;
> >  >  T10:;
> >  >          case 3:
> >  >          goto T11;
> >  >  T11:;
> >  >          case 4:
> >  >          goto T12;
> >  >  T12:;
> >  >          case 5:
> >  >          goto T13;
> >  >  T13:;
> >  >          case 6:
> >  >          goto T14;
> >  >  T14:;
> >  >          goto T4;
> >  >
> >  >          default:
> >  >          goto T15;
> >  >  T15:;
> >  >          goto T6;
> >  >
> >  >          goto T4;
> >  >          }
> >  >          goto T4;
> >  >
> >  >          /* END (EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          goto T6;
> >  >  T6:;
> >  >          V10=3D 0;
> >  >          goto T3;
> >  >
> >  >          goto T4;
> >  >  T4:;
> >  >          goto T3;
> >  >  T3:;
> >  >          /*(MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          /*(SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T27;
> >  >  T27:;
> >  >          if(!(((V5))=3D=3D((V6)))){
> >  >          goto T24;
> >  >          }
> >  >          goto T25;
> >  >
> >  >          case 1:
> >  >          goto T28;
> >  >  T28:;
> >  >          if(!(eql((V5),(V6)))){
> >  >          goto T24;
> >  >          }
> >  >          goto T25;
> >  >
> >  >          goto T24;
> >  >          }
> >  >          goto T24;
> >  >
> >  >          goto T25;
> >  >  T25:;
> >  >          goto T23;
> >  >
> >  >          goto T24;
> >  >  T24:;
> >  >          goto T21;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T23;
> >  >  T23:;
> >  >          {object V11 =3D (V9);
> >  >          VMR1(V11);}
> >  >          goto T21;
> >  >  T21:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T37;
> >  >  T37:;
> >  >          if(!(((V5))=3D=3D((V7)))){
> >  >          goto T34;
> >  >          }
> >  >          goto T35;
> >  >
> >  >          case 1:
> >  >          goto T38;
> >  >  T38:;
> >  >          if(!(eql((V5),(V7)))){
> >  >          goto T34;
> >  >          }
> >  >          goto T35;
> >  >
> >  >          goto T34;
> >  >          }
> >  >          goto T34;
> >  >
> >  >          goto T35;
> >  >  T35:;
> >  >          goto T33;
> >  >
> >  >          goto T34;
> >  >  T34:;
> >  >          goto T31;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T33;
> >  >  T33:;
> >  >          {object V12 =3D /* (CDR SYSTEM::X) */V9->c.c_cdr;
> >  >          VMR1(V12);}
> >  >          goto T31;
> >  >  T31:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T47;
> >  >  T47:;
> >  >          if(!(((V5))=3D=3D((V8)))){
> >  >          goto T44;
> >  >          }
> >  >          goto T45;
> >  >
> >  >          case 1:
> >  >          goto T48;
> >  >  T48:;
> >  >          if(!(eql((V5),(V8)))){
> >  >          goto T44;
> >  >          }
> >  >          goto T45;
> >  >
> >  >          goto T44;
> >  >          }
> >  >          goto T44;
> >  >
> >  >          goto T45;
> >  >  T45:;
> >  >          goto T43;
> >  >
> >  >          goto T44;
> >  >  T44:;
> >  >          goto T41;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T43;
> >  >  T43:;
> >  >          {object V13 =3D /* (CDR SYSTEM::X) */V9->c.c_cdr->c.c_cdr;
> >  >          VMR1(V13);}
> >  >          goto T41;
> >  >  T41:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /* END (MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          {object V14 =3D Cnil;
> >  >          VMR1(V14);}}}
> >  >          /* END (MEMBER X (LIST Y Z ...))*/
> >  >  }
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  Known result, (disassemble '(lambda (x y z w)  (declare (symbol z))
> >  >          (member z (list 3 z w))))
> >  >  loop eliminated
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  static object LI1__CMP_ANON___gazonk_2205667_1(object V5,object
> V6,object V7,object V8)
> >  >  {        VMB1 VMS1 VMV1
> >  >          /*(MEMBER Z (LIST 3 Z ...))*/
> >  >          {object V9;
> >  >          V9=3D list(3,make_fixnum(3),(V7),(V8));
> >  >          /*(MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          /*(SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          {object V10 =3D /* (CDR SYSTEM::X) */V9->c.c_cdr;
> >  >          VMR1(V10);}
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /* END (MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/}
> >  >          /* END (MEMBER Z (LIST 3 Z ...))*/
> >  >  }
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  Unknown x, known list of symbols (disassemble '(lambda (x y z w)
> >  >          (declare (symbol y z w )) (member x (list y z w))))
> >  >  loop unrolled, type-of x pulled out, when x is e.g. integer eql sti=
ll
> >  >          optimized to eq element wise as all list elements are symbo=
l.
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >  static object LI1__CMP_ANON___gazonk_2205667_1(object V5,object
> V6,object V7,object V8)
> >  >  {        VMB1 VMS1 VMV1
> >  >          /*(MEMBER X (LIST Y Z ...))*/
> >  >          {object V9;
> >  >          V9=3D list(3,(V6),(V7),(V8));
> >  >          {fixnum V10;
> >  >          V10=3D 1;
> >  >          /*(EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          switch(/* (APPLIED TP4 SYSTEM::X) */tp4(V5)){
> >  >          case -1:
> >  >          goto T8;
> >  >  T8:;
> >  >          goto T6;
> >  >
> >  >          case 1:
> >  >          goto T9;
> >  >  T9:;
> >  >          case 2:
> >  >          goto T10;
> >  >  T10:;
> >  >          case 3:
> >  >          goto T11;
> >  >  T11:;
> >  >          case 4:
> >  >          goto T12;
> >  >  T12:;
> >  >          case 5:
> >  >          goto T13;
> >  >  T13:;
> >  >          case 6:
> >  >          goto T14;
> >  >  T14:;
> >  >          goto T4;
> >  >
> >  >          default:
> >  >          goto T15;
> >  >  T15:;
> >  >          goto T6;
> >  >
> >  >          goto T4;
> >  >          }
> >  >          goto T4;
> >  >
> >  >          /* END (EQL-IS-EQ SYSTEM::ITEM)*/
> >  >          goto T6;
> >  >  T6:;
> >  >          V10=3D 0;
> >  >          goto T3;
> >  >
> >  >          goto T4;
> >  >  T4:;
> >  >          goto T3;
> >  >  T3:;
> >  >          /*(MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          /*(SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T27;
> >  >  T27:;
> >  >          if(!(((V5))=3D=3D((V6)))){
> >  >          goto T24;
> >  >          }
> >  >          goto T25;
> >  >
> >  >          case 1:
> >  >          goto T28;
> >  >  T28:;
> >  >          if(!(((V5))=3D=3D((V6)))){
> >  >          goto T24;
> >  >          }
> >  >          goto T25;
> >  >
> >  >          goto T24;
> >  >          }
> >  >          goto T24;
> >  >
> >  >          goto T25;
> >  >  T25:;
> >  >          goto T23;
> >  >
> >  >          goto T24;
> >  >  T24:;
> >  >          goto T21;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T23;
> >  >  T23:;
> >  >          {object V11 =3D (V9);
> >  >          VMR1(V11);}
> >  >          goto T21;
> >  >  T21:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T37;
> >  >  T37:;
> >  >          if(!(((V5))=3D=3D((V7)))){
> >  >          goto T34;
> >  >          }
> >  >          goto T35;
> >  >
> >  >          case 1:
> >  >          goto T38;
> >  >  T38:;
> >  >          if(!(((V5))=3D=3D((V7)))){
> >  >          goto T34;
> >  >          }
> >  >          goto T35;
> >  >
> >  >          goto T34;
> >  >          }
> >  >          goto T34;
> >  >
> >  >          goto T35;
> >  >  T35:;
> >  >          goto T33;
> >  >
> >  >          goto T34;
> >  >  T34:;
> >  >          goto T31;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T33;
> >  >  T33:;
> >  >          {object V12 =3D /* (CDR SYSTEM::X) */V9->c.c_cdr;
> >  >          VMR1(V12);}
> >  >          goto T31;
> >  >  T31:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /*((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /*(SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          /*(SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/
> >  >          switch(V10){
> >  >          case 0:
> >  >          goto T47;
> >  >  T47:;
> >  >          if(!(((V5))=3D=3D((V8)))){
> >  >          goto T44;
> >  >          }
> >  >          goto T45;
> >  >
> >  >          case 1:
> >  >          goto T48;
> >  >  T48:;
> >  >          if(!(((V5))=3D=3D((V8)))){
> >  >          goto T44;
> >  >          }
> >  >          goto T45;
> >  >
> >  >          goto T44;
> >  >          }
> >  >          goto T44;
> >  >
> >  >          goto T45;
> >  >  T45:;
> >  >          goto T43;
> >  >
> >  >          goto T44;
> >  >  T44:;
> >  >          goto T41;
> >  >
> >  >          /* END (SYSTEM::TEST-NO-KEY SYSTEM::X (SYSTEM::KEY
> SYSTEM::Y))*/
> >  >          /* END (SYSTEM::TEST SYSTEM::ITEM (CAR SYSTEM::X))*/
> >  >          goto T43;
> >  >  T43:;
> >  >          {object V13 =3D /* (CDR SYSTEM::X) */V9->c.c_cdr->c.c_cdr;
> >  >          VMR1(V13);}
> >  >          goto T41;
> >  >  T41:;
> >  >          /* END ((LAMBDA (SYSTEM::X) (DECLARE #) ...) SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F (CDR SYSTEM::X))*/
> >  >          /* END (SYSTEM::LMAP SYSTEM::F SYSTEM::X)*/
> >  >          /* END (SYSTEM::LMAPR SYSTEM::FUN LIST)*/
> >  >          /* END (MAPL (LAMBDA (SYSTEM::X) (IF # #)) LIST)*/
> >  >          {object V14 =3D Cnil;
> >  >          VMR1(V14);}}}
> >  >          /* END (MEMBER X (LIST Y Z ...))*/
> >  >  }
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> >  >
> >  >  Take care,
> >  >
> >  >  David Scherfgen via Maxima-discuss
> >  >  <[email protected]> writes:
> >  >
> >  >  > Hello,
> >  >  >
> >  >  > I noticed that GCL 2.7.1 compiles these functions differently:
> >  >  >
> >  >  > (defun f (x) (member x '(a b c)))
> >  >  > (defun g (x) (member x '(a b c) :test #'eq))
> >  >  >
> >  >  > I suppose that's because F uses the default EQL as the test. I
> tried to understand the C code it generated, but it was incomprehensible =
to
> me. Anyways,
> >  I
> >  >  saw
> >  >  > that the second function, G, had inlined the MEMBER call into (OR
> (EQ X 'A) (EQ X 'B) (EQ Y 'C)), which is reasonable. But why does F get
> compiled
> >  >  differently?
> >  >  >
> >  >  > Shouldn't the compiler notice that the second argument to MEMBER
> is a literal list of symbols and automatically use EQ instead of the
> default EQL test?
> >  >  That
> >  >  > would be an easy and safe optimization.
> >  >  >
> >  >  > The same goes for the case where the first argument to MEMBER is =
a
> literal symbol.
> >  >  >
> >  >  > Maxima is full of such instances where MEMBER is used as a shorte=
r
> way to write (OR (EQ ...) (EQ ...) ...), and ":test #'eq" has mostly been
> removed
> >  because
> >  >  it was
> >  >  > believed that any modern Lisp compiler would apply this
> optimization automatically. At least SBCL does. (CCL doesn't, I have file=
d
> a report already.)
> >  >  >
> >  >  > Best regards
> >  >  > David Scherfgen
> >  >  >
> >  >  > _______________________________________________
> >  >  > Maxima-discuss mailing list
> >  >  > [email protected]
> >  >  > https://lists.sourceforge.net/lists/listinfo/maxima-discuss
> >  >  >
> >  >
> >  >  --
> >  >  Camm Maguire
> [email protected]
> >  >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> >  >  "The earth is but one country, and mankind its citizens."  --
> Baha'u'llah
> >  >
> >  > _______________________________________________
> >  > Maxima-discuss mailing list
> >  > [email protected]
> >  > https://lists.sourceforge.net/lists/listinfo/maxima-discuss
> >  >
> >
> >  --
> >  Camm Maguire
> [email protected]
> >
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> >  "The earth is but one country, and mankind its citizens."  --
> Baha'u'llah
> >
> >  _______________________________________________
> >  Maxima-discuss mailing list
> >  [email protected]
> >  https://lists.sourceforge.net/lists/listinfo/maxima-discuss
> >
>
> --
> Camm Maguire                                        [email protected]=
g
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> "The earth is but one country, and mankind its citizens."  --  Baha'u'lla=
h
>
>
> _______________________________________________
> Maxima-discuss mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>

--0000000000000719f4063466e2fe
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><p dir=3D"ltr">On that note, I found something strange. In=
 GCL 2.7.1, <font face=3D"monospace">(member x &#39;(a b c d e f))</font> i=
s often much faster than the same with <font face=3D"monospace">:test #&#39=
;eq</font>. It depends on whether the element is a member of the list or no=
t, and at which position it is.</p><p dir=3D"ltr">Maybe something is wrong =
with my testing? Camm, maybe you know what&#39;s happening there? This is w=
hat I did:</p><p dir=3D"ltr"><font face=3D"monospace">(defun f (x) (member =
x &#39;(a b c d e f)))<br>(defun g (x) (member x &#39;(a b c d e f) :test #=
&#39;eq))<br>(compile &#39;f)<br>(compile &#39;g)<br><br>(defun test-f (x n=
) (dotimes (i n) (f x)))<br>(defun test-g (x n) (dotimes (i n) (g x)))<br>(=
compile &#39;test-f)<br>(compile &#39;test-g)<br><br>(time (test-f &#39;a=
=C2=A010000000000)) -&gt; 13.09 s<br>(time (test-g &#39;a=C2=A010000000000)=
) -&gt; 15.21 s -&gt; <b>:test #&#39;eq is slower!</b></font><br><br>... ti=
mings increase slightly when testing for <font face=3D"monospace">&#39;b</f=
ont>, <font face=3D"monospace">&#39;c</font>, <font face=3D"monospace">&#39=
;d</font>=C2=A0- not surprising, as larger parts of the list have to be sea=
rched.<br>But then, when testing for <font face=3D"monospace">&#39;e</font>=
 or <font face=3D"monospace">&#39;f</font>, things start to turn around:</p=
><p dir=3D"ltr"><font face=3D"monospace">(time (test-f &#39;e 10000000000))=
 -&gt; 15.35 s -&gt; <b>suddenly much slower!</b><br>(time (test-g &#39;e 1=
0000000000)) -&gt; 15.36 s<br><br>(time (test-f &#39;f 10000000000)) -&gt; =
17.52 s -&gt; <b>even slower!</b><br>(time (test-g &#39;f 10000000000)) -&g=
t; 15.4 s -&gt; <b>now :test #&#39;eq is faster!</b></font><br><br>Testing =
for a member not in the list:<br><br><font face=3D"monospace">(time (test-f=
 &#39;g 10000000000)) -&gt; 13.12 s -&gt; <b>faster than searching for &#39=
;e, even though it has to search the entire list?!</b><br>(time (test-g &#3=
9;g 10000000000)) -&gt; 15.3 s</font></p><p>I thought that maybe it is rela=
ted to <font face=3D"monospace">member</font> returning a sublist and not j=
ust <font face=3D"monospace">t</font> or <font face=3D"monospace">nil</font=
>.<br>So I defined=C2=A0<font face=3D"monospace">f</font> and <font face=3D=
"monospace">g</font> as follows, to not return the sublist returned by <fon=
t face=3D"monospace">member</font>, but only <font face=3D"monospace">t</fo=
nt> or <font face=3D"monospace">nil</font>:</p><p><font face=3D"monospace">=
(defun f (x) (if (member x &#39;(a b c d e f)) t))<br>(defun g (x) (if (mem=
ber x &#39;(a b c d e f) :test #&#39;eq) t))</font></p><p>Then <font face=
=3D"monospace">f</font> gets much slower and <font face=3D"monospace">g</fo=
nt> gets much faster.</p><p>This is very confusing.</p></div><br><div class=
=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr=
">Am Mo., 5. Mai 2025 um 18:59=C2=A0Uhr schrieb Camm Maguire &lt;<a href=3D=
"mailto:[email protected]">[email protected]</a>&gt;:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex">Greetings, and thanks for y=
our feedback!<br>
<br>
Stavros Macrakis &lt;<a href=3D"mailto:[email protected]" target=3D"_blank=
">[email protected]</a>&gt; writes:<br>
<br>
&gt; Assuming that clause 2 applies to the loop in member<br>
&gt;<br>
&gt;=C2=A0 2) GCL will unroll loops over constant (and non-constant) lists =
up to *src-loop-unroll-limit* (default 20)<br>
&gt;<br>
&gt; then this whole discussion is moot, since the vast majority (95%) of c=
onstant lists of symbols are length 6 or less, and those are the often-used=
 cases.<br>
&gt;<br>
<br>
Unrolling the loop just allows the compiler to easily see the type of<br>
each element one at a time.=C2=A0 But as this is later than the decision to=
<br>
compute the type integer on x, and as one does not know the unroll will<br>
succeed until it does, it will not help in avoiding the former unless<br>
there is an additional pass, or a backup/retry.=C2=A0 Backup/retries can be=
<br>
exponentially bad in compile time in egregious nested cases.<br>
<br>
&gt; Re<br>
&gt;<br>
&gt;=C2=A0 5) GCL will not attempt to aggregate the types across all elemen=
ts of a list, i.e. this whole list is of type symbol, so pull that out of t=
he loop as well.=C2=A0 This<br>
&gt;=C2=A0 seems ill-advised and unpractical to me at least at the moment.<=
br>
&gt;<br>
&gt; I&#39;m surprised by this, and don&#39;t understand why it would be &q=
uot;ill-advised and unpractical&quot;, but as I say it&#39;s moot if (2) is=
 applied.<br>
<br>
The cleanest optimizations are lisp code inserts in the function source<br>
which make sense in the generic case, and can be pruned by the compiler<br>
in special cases.=C2=A0 Setting separate compiler-macros, inline property<b=
r>
strings, or special compiler handler functions for a given function is<br>
fragile and error prone.=C2=A0 We&#39;ve made a lot of progress cleaning up=
 a lot<br>
of the latter.<br>
<br>
It would be easy to add a check on the list alongside the check on x in<br>
the source to prune this extra branch in the test, but at the cost of an<br=
>
extra traversal of the list in the generic case, which seems like a<br>
loser.<br>
<br>
&gt;<br>
&gt;=C2=A0 3) GCL will pull the type-of on unknown x out of the loop and us=
e it as a key to a switch table inside the loop.<br>
&gt;<br>
&gt; Of course, this is unnecessary if arg 2 is a list of symbols, since eq=
 applies to all data types. In some styles of code, it might be faster to t=
est (and (symbolp x) (or<br>
&gt; (eq x &#39;c1) (eq x &#39;c2) ...)), but in the case of Maxima this wi=
ll almost always slow things down rather than speed them up.<br>
&gt;<br>
&gt; The expression (member x &#39;(a b c...) :test #&#39;eq) strikes me as=
 verbose and pedantic. Code should be easily readable by humans, and the ex=
tra clause is clearly<br>
&gt; semantically unnecessary. memq is a bit better, but shouldn&#39;t be n=
ecessary (there is nothing wrong with writing functions which encapsulate s=
ome useful piece<br>
&gt; of Common Lisp functionality). If a particular compiler chooses not to=
 optimize that idiom, I&#39;d say that&#39;s the compiler&#39;s problem. Bu=
t according to Camm&#39;s<br>
&gt; explanation, GCL does optimize it. So there&#39;s no issue.<br>
<br>
I agree in preferring the simple expression and relying on the compiler<br>
to do the right thing.=C2=A0 I cannot think at the moment of any instance i=
n<br>
GCL&#39;s own code which specifies :test #&#39;eq.<br>
<br>
Take care,<br>
<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -s<br>
&gt;<br>
&gt; On Sat, May 3, 2025 at 6:37=E2=80=AFAM Camm Maguire &lt;<a href=3D"mai=
lto:[email protected]" target=3D"_blank">[email protected]</a>&gt=
; wrote:<br>
&gt;<br>
&gt;=C2=A0 Greetings!<br>
&gt;<br>
&gt;=C2=A0 This is what is happening, with a twist.<br>
&gt;<br>
&gt;=C2=A0 Since we don&#39;t know that *all* elements of the list will all=
ow eql-&gt;eq<br>
&gt;=C2=A0 ahead of time (optimization 5), one runtime check on x is done o=
utside<br>
&gt;=C2=A0 the loop to see if we can do eql-&gt;eq on that basis, e.g. an i=
nteger x0<br>
&gt;=C2=A0 is computed.=C2=A0 The test then becomes (if x0 (eq a b) (eql a =
b)), and then<br>
&gt;=C2=A0 eql goes to eq based on b anyway, so at the C level we have (if =
x0 (eq a<br>
&gt;=C2=A0 b) (eq a b)).=C2=A0 All eql code in the example you cite has bee=
n eliminated.<br>
&gt;=C2=A0 We have no optimization trying to recognize identical branches a=
nd<br>
&gt;=C2=A0 eliminate the if.=C2=A0 So instead of one machine instruction, y=
ou have two,<br>
&gt;=C2=A0 switch x0, (eq a b).<br>
&gt;<br>
&gt;=C2=A0 Take care,<br>
&gt;<br>
&gt;=C2=A0 David Scherfgen via Maxima-discuss<br>
&gt;=C2=A0 &lt;<a href=3D"mailto:[email protected]" targ=
et=3D"_blank">[email protected]</a>&gt; writes:<br>
&gt;<br>
&gt;=C2=A0 &gt; Thanks for the explanation, Camm.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Optimizations 2) and 1) should suffice for this very common=
 case in Maxima&#39;s source to be optimized in GCL (just like SBCL does), =
optimization 5) shouldn&#39;t<br>
&gt;=C2=A0 be<br>
&gt;=C2=A0 &gt; necessary.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Let&#39;s take the example (member x &#39;(a b c)), i.e. un=
known x and a list of literal symbols.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Via 2), GCL should unroll that into (or (eql x &#39;a) (eql=
 x &#39;b) (eql x &#39;c)).<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Via 1), GCL should replace each of the (eql ...) with (eq .=
..), as one of the arguments is a literal symbol.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; But that doesn&#39;t seem to be what&#39;s happening, right=
?<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Best regards<br>
&gt;=C2=A0 &gt; David Scherfgen<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; Camm Maguire &lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank">[email protected]</a>&gt; schrieb am Fr., 2. Mai 202=
5, 22:28:<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 Greetings!=C2=A0 Glad you noticed this.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 This touches on 4 optimizations currently in place in=
 the compiler, and<br>
&gt;=C2=A0 &gt;=C2=A0 one that is not.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 1) GCL will optimize eql to eq when it can infer the =
types on either arg<br>
&gt;=C2=A0 &gt;=C2=A0 that would permit this.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 2) GCL will unroll loops over constant (and non-const=
ant) lists up to<br>
&gt;=C2=A0 &gt;=C2=A0 *src-loop-unroll-limit* (default 20)<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 3) GCL will pull the type-of on unknown x out of the =
loop and use it as<br>
&gt;=C2=A0 &gt;=C2=A0 a key to a switch table inside the loop.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 4) GCL will replace the loop entirely with its known =
result when<br>
&gt;=C2=A0 &gt;=C2=A0 possible. <br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 5) GCL will not attempt to aggregate the types across=
 all elements of a<br>
&gt;=C2=A0 &gt;=C2=A0 list, i.e. this whole list is of type symbol, so pull=
 that out of the<br>
&gt;=C2=A0 &gt;=C2=A0 loop as well.=C2=A0 This seems ill-advised and unprac=
tical to me at least at<br>
&gt;=C2=A0 &gt;=C2=A0 the moment.<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 You can get more info on what is happening by setting=
<br>
&gt;=C2=A0 &gt;=C2=A0 compiler::*annotate* to t before running disassemble.=
=C2=A0 If you only want<br>
&gt;=C2=A0 &gt;=C2=A0 the C code and not the disassembly, (setq<br>
&gt;=C2=A0 &gt;=C2=A0 compiler::*disassemble-objdump* nil).<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 You can also see the lisp source of member:<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 (&#39;si::fle is shorthand for &#39;function-lambda-e=
xpression)<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 (si::fle &#39;member)<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 (LAMBDA<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(SYSTEM::ITEM LIST &amp;KEY SYSTEM::KEY SYSTEM:=
:TEST SYSTEM::TEST-NOT)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(DECLARE (OPTIMIZE (SAFETY 1))) (CHECK-TYPE LIS=
T PROPER-LIST)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(CHECK-TYPE SYSTEM::TEST (OR NULL SYSTEM::FUNCT=
ION-DESIGNATOR))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(CHECK-TYPE SYSTEM::TEST-NOT (OR NULL SYSTEM::F=
UNCTION-DESIGNATOR))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(CHECK-TYPE SYSTEM::KEY (OR NULL SYSTEM::FUNCTI=
ON-DESIGNATOR))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0(BLOCK<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 MEMBER<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 (LET*<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0((#:G568<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0(COERCE (OR SYSTEM::TEST SYSTEM::=
TEST-NOT #&#39;EQL) &#39;FUNCTION))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 (#:G569<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0(IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (EQ #:G568 #&#39;EQ) 0<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(EQ #:G568 #&#39;EQL) 1<br=
>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (EQ #:G568 #&#39;EQUAL) 2=
<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (IF (EQ #:G568 #&#39;EQUA=
LP) 3 (IF (EQ #:G568 #&#39;FUNCALL) 4 5))))))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 (#:G570 (IF SYSTEM::KEY (COERCE SYSTEM:=
:KEY &#39;FUNCTION)))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 (#:G570 (IF (NOT (EQ #:G570 #&#39;IDENT=
ITY)) #:G570)))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0(AND<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 SYSTEM::TEST SYSTEM::TEST-NOT<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 (ERROR &quot;both test and test not sup=
plied&quot;))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0(LET*<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 NIL<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 (LABELS<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0((SYSTEM::KEY<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(SYSTEM::X) (IF #:G570 (FU=
NCALL #:G570 SYSTEM::X) SYSTEM::X))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (SYSTEM::TEST-NO-KEY<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(SYSTEM::X SYSTEM::Y)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (CASE<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#:G569 (0 (EQ SYSTE=
M::X SYSTEM::Y))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(1 (EQL SYSTEM::X S=
YSTEM::Y)) (2 (EQUAL SYSTEM::X SYSTEM::Y))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(3 (EQUALP SYSTEM::=
X SYSTEM::Y))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(4 (FUNCALL SYSTEM:=
:X SYSTEM::Y))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(OTHERWISE (FUNCALL=
 #:G568 SYSTEM::X SYSTEM::Y)))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (NOT SYSTEM::TEST-NOT) SY=
STEM::TEST-NOT))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (SYSTEM::TEST<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(SYSTEM::X SYSTEM::Y)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(SYSTEM::TEST-NO-KEY SYSTE=
M::X (SYSTEM::KEY SYSTEM::Y))))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0(DECLARE (IGNORABLE #&#39;SYSTEM:=
:TEST))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0(IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (CASE<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#:G569<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0((1 2 3)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (OR<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(CASE<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #:G569 (1 (EQL-IS-=
EQ SYSTEM::ITEM))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (2 (EQUAL-IS-EQ SY=
STEM::ITEM))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (3 (EQUALP-IS-EQ S=
YSTEM::ITEM))))))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (SETQ #:G569 0))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0(MACROLET<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((SYSTEM::COLLECT<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (SYSTEM::A SYSTEM::B SYST=
EM::C)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (LIST<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&#39;LET (LIST (LIS=
T &#39;SYSTEM::TMP SYSTEM::A))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(LIST<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &#39;SETQ SYSTEM::=
C<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (LIST<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&#39;IF SYST=
EM::C<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(LIST &#39;C=
DR (LIST &#39;RPLACD SYSTEM::C &#39;SYSTEM::TMP))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(LIST &#39;S=
ETQ SYSTEM::B &#39;SYSTEM::TMP))))))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(NOT<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (MAPL<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(LAMBDA<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (SYSTEM::X)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (IF<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(SYSTEM::TES=
T SYSTEM::ITEM (CAR SYSTEM::X))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(RETURN-FROM=
 MEMBER SYSTEM::X)))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0LIST))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NIL)))))))<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 Some examples:<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 Unknown x &amp; y, (disassemble &#39;(lambda (x y) (m=
ember x y))<br>
&gt;=C2=A0 &gt;=C2=A0 loop not unrolled, type-of x pulled out, eql used unl=
ess runtime<br>
&gt;=C2=A0 &gt;=C2=A0 determination of x allows eq.<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 static object LI1__CMP_ANON___gazonk_2205667_0(regist=
er object V3,object V4)<br>
&gt;=C2=A0 &gt;=C2=A0 {=C2=A0 =C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MEMBER X Y)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {register fixnum V5;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D 1;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(EQL-IS-EQ SYSTEM::ITEM=
)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(/* (APPLIED TP4 SY=
STEM::X) */tp4(V3)){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case -1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
&gt;=C2=A0 &gt;=C2=A0 T7:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T8;<br>
&gt;=C2=A0 &gt;=C2=A0 T8:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 2:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T9;<br>
&gt;=C2=A0 &gt;=C2=A0 T9:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 3:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T10;<br>
&gt;=C2=A0 &gt;=C2=A0 T10:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 4:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
&gt;=C2=A0 &gt;=C2=A0 T11:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 5:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T12;<br>
&gt;=C2=A0 &gt;=C2=A0 T12:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 6:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T13;<br>
&gt;=C2=A0 &gt;=C2=A0 T13:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T14;<br>
&gt;=C2=A0 &gt;=C2=A0 T14:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (EQL-IS-EQ SYSTEM:=
:ITEM)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
&gt;=C2=A0 &gt;=C2=A0 T5:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D 0;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;=C2=A0 T3:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
&gt;=C2=A0 &gt;=C2=A0 T2:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MAPL (LAMBDA (SYSTEM::=
X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAPR SYSTEM::=
FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {register object V6;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V6=3D (V4);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 T24:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(((V6))=3D=3DCnil){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T26;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V5){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T36;<br>
&gt;=C2=A0 &gt;=C2=A0 T36:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V3))=3D=3D(/* (SYS=
TEM::KEY SYSTEM::Y) */(V6)-&gt;c.c_car))){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
&gt;=C2=A0 &gt;=C2=A0 T37:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(eql((V3),/* (SYSTEM:=
:KEY SYSTEM::Y) */(V6)-&gt;c.c_car))){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 T34:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T32;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 T33:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T30;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T32;<br>
&gt;=C2=A0 &gt;=C2=A0 T32:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V8 =3D (V6);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V8);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T30;<br>
&gt;=C2=A0 &gt;=C2=A0 T30:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V9;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V9=3D /* (APPLIED CDR SYS=
TEM::X) */V6-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V6=3D (V9);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T26;<br>
&gt;=C2=A0 &gt;=C2=A0 T26:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T22;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T22;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T22;<br>
&gt;=C2=A0 &gt;=C2=A0 T22:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(((V4))=3D=3DCnil){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T20;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAPR SYS=
TEM::FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MAPL (LAMBDA (SYS=
TEM::X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T17;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T20;<br>
&gt;=C2=A0 &gt;=C2=A0 T20:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V10 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V10);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T17;<br>
&gt;=C2=A0 &gt;=C2=A0 T17:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V11 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V11);}}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MEMBER X Y)*/<br>
&gt;=C2=A0 &gt;=C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 symbol x, unknown y, (disassemble &#39;(lambda (x y) =
(declare (symbol x)) (member x y)))<br>
&gt;=C2=A0 &gt;=C2=A0 loop not unrolled, eql-&gt;eq, no typing<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 static object LI1__CMP_ANON___gazonk_2205667_0(regist=
er object V3,object V4)<br>
&gt;=C2=A0 &gt;=C2=A0 {=C2=A0 =C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MEMBER X Y)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MAPL (LAMBDA (SYSTEM::=
X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAPR SYSTEM::=
FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {register object V5;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D (V4);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T9;<br>
&gt;=C2=A0 &gt;=C2=A0 T9:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(((V5))=3D=3DCnil){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V3))=3D=3D(/* (SYS=
TEM::KEY SYSTEM::Y) */(V5)-&gt;c.c_car))){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T18;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T17;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T18;<br>
&gt;=C2=A0 &gt;=C2=A0 T18:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T15;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T17;<br>
&gt;=C2=A0 &gt;=C2=A0 T17:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V7 =3D (V5);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V7);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T15;<br>
&gt;=C2=A0 &gt;=C2=A0 T15:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V8;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V8=3D /* (APPLIED CDR SYS=
TEM::X) */V5-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D (V8);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T9;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
&gt;=C2=A0 &gt;=C2=A0 T11:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
&gt;=C2=A0 &gt;=C2=A0 T7:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(((V4))=3D=3DCnil){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAPR SYS=
TEM::FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MAPL (LAMBDA (SYS=
TEM::X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
&gt;=C2=A0 &gt;=C2=A0 T5:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V9 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V9);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
&gt;=C2=A0 &gt;=C2=A0 T2:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V10 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V10);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MEMBER X Y)*/<br>
&gt;=C2=A0 &gt;=C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 Unknown x, known list, (disassemble &#39;(lambda (x y=
 z w)=C2=A0 (member x (list y z w))))<br>
&gt;=C2=A0 &gt;=C2=A0 loop unrolled, type-of x pulled out<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 static object LI1__CMP_ANON___gazonk_2205667_1(object=
 V5,object V6,object V7,object V8)<br>
&gt;=C2=A0 &gt;=C2=A0 {=C2=A0 =C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MEMBER X (LIST Y Z ...=
))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V9;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V9=3D list(3,(V6),(V7),(V=
8));<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {fixnum V10;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V10=3D 1;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(EQL-IS-EQ SYSTEM::ITEM=
)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(/* (APPLIED TP4 SY=
STEM::X) */tp4(V5)){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case -1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T8;<br>
&gt;=C2=A0 &gt;=C2=A0 T8:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T9;<br>
&gt;=C2=A0 &gt;=C2=A0 T9:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 2:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T10;<br>
&gt;=C2=A0 &gt;=C2=A0 T10:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 3:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
&gt;=C2=A0 &gt;=C2=A0 T11:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 4:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T12;<br>
&gt;=C2=A0 &gt;=C2=A0 T12:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 5:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T13;<br>
&gt;=C2=A0 &gt;=C2=A0 T13:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 6:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T14;<br>
&gt;=C2=A0 &gt;=C2=A0 T14:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T15;<br>
&gt;=C2=A0 &gt;=C2=A0 T15:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (EQL-IS-EQ SYSTEM:=
:ITEM)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;=C2=A0 T6:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V10=3D 0;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;=C2=A0 T4:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;=C2=A0 T3:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MAPL (LAMBDA (SYSTEM::=
X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAPR SYSTEM::=
FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T27;<br>
&gt;=C2=A0 &gt;=C2=A0 T27:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V6))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T28;<br>
&gt;=C2=A0 &gt;=C2=A0 T28:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(eql((V5),(V6)))){<br=
>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;=C2=A0 T25:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 T24:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
&gt;=C2=A0 &gt;=C2=A0 T23:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V11 =3D (V9);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V11);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
&gt;=C2=A0 &gt;=C2=A0 T21:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
&gt;=C2=A0 &gt;=C2=A0 T37:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V7))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T38;<br>
&gt;=C2=A0 &gt;=C2=A0 T38:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(eql((V5),(V7)))){<br=
>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;=C2=A0 T35:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 T34:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T31;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 T33:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V12 =3D /* (CDR S=
YSTEM::X) */V9-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V12);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T31;<br>
&gt;=C2=A0 &gt;=C2=A0 T31:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T47;<br>
&gt;=C2=A0 &gt;=C2=A0 T47:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V8))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T48;<br>
&gt;=C2=A0 &gt;=C2=A0 T48:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(eql((V5),(V8)))){<br=
>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;=C2=A0 T45:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 T44:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T41;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
&gt;=C2=A0 &gt;=C2=A0 T43:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V13 =3D /* (CDR S=
YSTEM::X) */V9-&gt;c.c_cdr-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V13);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T41;<br>
&gt;=C2=A0 &gt;=C2=A0 T41:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAPR SYS=
TEM::FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MAPL (LAMBDA (SYS=
TEM::X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V14 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V14);}}}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MEMBER X (LIST Y =
Z ...))*/<br>
&gt;=C2=A0 &gt;=C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 Known result, (disassemble &#39;(lambda (x y z w)=C2=
=A0 (declare (symbol z))<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (member z (list 3 z w))))=
<br>
&gt;=C2=A0 &gt;=C2=A0 loop eliminated<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 static object LI1__CMP_ANON___gazonk_2205667_1(object=
 V5,object V6,object V7,object V8)<br>
&gt;=C2=A0 &gt;=C2=A0 {=C2=A0 =C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MEMBER Z (LIST 3 Z ...=
))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V9;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V9=3D list(3,make_fixnum(=
3),(V7),(V8));<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MAPL (LAMBDA (SYSTEM::=
X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAPR SYSTEM::=
FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V10 =3D /* (CDR S=
YSTEM::X) */V9-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V10);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAPR SYS=
TEM::FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MAPL (LAMBDA (SYS=
TEM::X) (IF # #)) LIST)*/}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MEMBER Z (LIST 3 =
Z ...))*/<br>
&gt;=C2=A0 &gt;=C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 Unknown x, known list of symbols (disassemble &#39;(l=
ambda (x y z w)<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (declare (symbol y z w ))=
 (member x (list y z w))))<br>
&gt;=C2=A0 &gt;=C2=A0 loop unrolled, type-of x pulled out, when x is e.g. i=
nteger eql still<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 optimized to eq element w=
ise as all list elements are symbol.<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 static object LI1__CMP_ANON___gazonk_2205667_1(object=
 V5,object V6,object V7,object V8)<br>
&gt;=C2=A0 &gt;=C2=A0 {=C2=A0 =C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MEMBER X (LIST Y Z ...=
))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V9;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V9=3D list(3,(V6),(V7),(V=
8));<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {fixnum V10;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V10=3D 1;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(EQL-IS-EQ SYSTEM::ITEM=
)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(/* (APPLIED TP4 SY=
STEM::X) */tp4(V5)){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case -1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T8;<br>
&gt;=C2=A0 &gt;=C2=A0 T8:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T9;<br>
&gt;=C2=A0 &gt;=C2=A0 T9:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 2:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T10;<br>
&gt;=C2=A0 &gt;=C2=A0 T10:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 3:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
&gt;=C2=A0 &gt;=C2=A0 T11:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 4:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T12;<br>
&gt;=C2=A0 &gt;=C2=A0 T12:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 5:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T13;<br>
&gt;=C2=A0 &gt;=C2=A0 T13:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 6:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T14;<br>
&gt;=C2=A0 &gt;=C2=A0 T14:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T15;<br>
&gt;=C2=A0 &gt;=C2=A0 T15:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (EQL-IS-EQ SYSTEM:=
:ITEM)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
&gt;=C2=A0 &gt;=C2=A0 T6:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V10=3D 0;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T4;<br>
&gt;=C2=A0 &gt;=C2=A0 T4:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
&gt;=C2=A0 &gt;=C2=A0 T3:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(MAPL (LAMBDA (SYSTEM::=
X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAPR SYSTEM::=
FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T27;<br>
&gt;=C2=A0 &gt;=C2=A0 T27:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V6))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T28;<br>
&gt;=C2=A0 &gt;=C2=A0 T28:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V6))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
&gt;=C2=A0 &gt;=C2=A0 T25:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
&gt;=C2=A0 &gt;=C2=A0 T24:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
&gt;=C2=A0 &gt;=C2=A0 T23:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V11 =3D (V9);<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V11);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
&gt;=C2=A0 &gt;=C2=A0 T21:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
&gt;=C2=A0 &gt;=C2=A0 T37:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V7))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T38;<br>
&gt;=C2=A0 &gt;=C2=A0 T38:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V7))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T35;<br>
&gt;=C2=A0 &gt;=C2=A0 T35:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
&gt;=C2=A0 &gt;=C2=A0 T34:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T31;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
&gt;=C2=A0 &gt;=C2=A0 T33:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V12 =3D /* (CDR S=
YSTEM::X) */V9-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V12);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T31;<br>
&gt;=C2=A0 &gt;=C2=A0 T31:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::LMAP SYSTEM::F=
 (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*((LAMBDA (SYSTEM::X) (D=
ECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST SYSTEM::I=
TEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*(SYSTEM::TEST-NO-KEY SY=
STEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(V10){<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 0:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T47;<br>
&gt;=C2=A0 &gt;=C2=A0 T47:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V8))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T48;<br>
&gt;=C2=A0 &gt;=C2=A0 T48:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((V5))=3D=3D((V8))))=
{<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T45;<br>
&gt;=C2=A0 &gt;=C2=A0 T45:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
&gt;=C2=A0 &gt;=C2=A0 T44:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T41;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST-NO-K=
EY SYSTEM::X (SYSTEM::KEY SYSTEM::Y))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::TEST SYST=
EM::ITEM (CAR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
&gt;=C2=A0 &gt;=C2=A0 T43:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V13 =3D /* (CDR S=
YSTEM::X) */V9-&gt;c.c_cdr-&gt;c.c_cdr;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V13);}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T41;<br>
&gt;=C2=A0 &gt;=C2=A0 T41:;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END ((LAMBDA (SYSTEM::=
X) (DECLARE #) ...) SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F (CDR SYSTEM::X))*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAP SYST=
EM::F SYSTEM::X)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (SYSTEM::LMAPR SYS=
TEM::FUN LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MAPL (LAMBDA (SYS=
TEM::X) (IF # #)) LIST)*/<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V14 =3D Cnil;<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V14);}}}<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* END (MEMBER X (LIST Y =
Z ...))*/<br>
&gt;=C2=A0 &gt;=C2=A0 }<br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 Take care,<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 David Scherfgen via Maxima-discuss<br>
&gt;=C2=A0 &gt;=C2=A0 &lt;<a href=3D"mailto:[email protected]=
e.net" target=3D"_blank">[email protected]</a>&gt; write=
s:<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; Hello,<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; I noticed that GCL 2.7.1 compiles these function=
s differently:<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; (defun f (x) (member x &#39;(a b c)))<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; (defun g (x) (member x &#39;(a b c) :test #&#39;=
eq))<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; I suppose that&#39;s because F uses the default =
EQL as the test. I tried to understand the C code it generated, but it was =
incomprehensible to me. Anyways,<br>
&gt;=C2=A0 I<br>
&gt;=C2=A0 &gt;=C2=A0 saw<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; that the second function, G, had inlined the MEM=
BER call into (OR (EQ X &#39;A) (EQ X &#39;B) (EQ Y &#39;C)), which is reas=
onable. But why does F get compiled<br>
&gt;=C2=A0 &gt;=C2=A0 differently?<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; Shouldn&#39;t the compiler notice that the secon=
d argument to MEMBER is a literal list of symbols and automatically use EQ =
instead of the default EQL test?<br>
&gt;=C2=A0 &gt;=C2=A0 That<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; would be an easy and safe optimization.<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; The same goes for the case where the first argum=
ent to MEMBER is a literal symbol.<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; Maxima is full of such instances where MEMBER is=
 used as a shorter way to write (OR (EQ ...) (EQ ...) ...), and &quot;:test=
 #&#39;eq&quot; has mostly been removed<br>
&gt;=C2=A0 because<br>
&gt;=C2=A0 &gt;=C2=A0 it was<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; believed that any modern Lisp compiler would app=
ly this optimization automatically. At least SBCL does. (CCL doesn&#39;t, I=
 have filed a report already.)<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; Best regards<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; David Scherfgen<br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; _______________________________________________<=
br>
&gt;=C2=A0 &gt;=C2=A0 &gt; Maxima-discuss mailing list<br>
&gt;=C2=A0 &gt;=C2=A0 &gt; <a href=3D"mailto:[email protected]=
ge.net" target=3D"_blank">[email protected]</a><br>
&gt;=C2=A0 &gt;=C2=A0 &gt; <a href=3D"https://lists.sourceforge.net/lists/l=
istinfo/maxima-discuss" rel=3D"noreferrer" target=3D"_blank">https://lists.=
sourceforge.net/lists/listinfo/maxima-discuss</a><br>
&gt;=C2=A0 &gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt;=C2=A0 -- <br>
&gt;=C2=A0 &gt;=C2=A0 Camm Maguire=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a><br>
&gt;=C2=A0 &gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D<br>
&gt;=C2=A0 &gt;=C2=A0 &quot;The earth is but one country, and mankind its c=
itizens.&quot;=C2=A0 --=C2=A0 Baha&#39;u&#39;llah<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &gt; _______________________________________________<br>
&gt;=C2=A0 &gt; Maxima-discuss mailing list<br>
&gt;=C2=A0 &gt; <a href=3D"mailto:[email protected]" tar=
get=3D"_blank">[email protected]</a><br>
&gt;=C2=A0 &gt; <a href=3D"https://lists.sourceforge.net/lists/listinfo/max=
ima-discuss" rel=3D"noreferrer" target=3D"_blank">https://lists.sourceforge=
.net/lists/listinfo/maxima-discuss</a><br>
&gt;=C2=A0 &gt;<br>
&gt;<br>
&gt;=C2=A0 -- <br>
&gt;=C2=A0 Camm Maguire=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 <a href=3D"mailto:[email protected]" target=3D"_blank">c=
[email protected]</a><br>
&gt;=C2=A0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D<br>
&gt;=C2=A0 &quot;The earth is but one country, and mankind its citizens.&qu=
ot;=C2=A0 --=C2=A0 Baha&#39;u&#39;llah<br>
&gt;<br>
&gt;=C2=A0 _______________________________________________<br>
&gt;=C2=A0 Maxima-discuss mailing list<br>
&gt;=C2=A0 <a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a><br>
&gt;=C2=A0 <a href=3D"https://lists.sourceforge.net/lists/listinfo/maxima-d=
iscuss" rel=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/=
lists/listinfo/maxima-discuss</a><br>
&gt;<br>
<br>
-- <br>
Camm Maguire=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 <a href=3D"mailto:[email protected]" target=3D"_blank">camm@maguir=
efamily.org</a><br>
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br=
>
&quot;The earth is but one country, and mankind its citizens.&quot;=C2=A0 -=
-=C2=A0 Baha&#39;u&#39;llah<br>
<br>
<br>
_______________________________________________<br>
Maxima-discuss mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank">M=
[email protected]</a><br>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/maxima-discuss" rel=
=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/listi=
nfo/maxima-discuss</a><br>
</blockquote></div>

--0000000000000719f4063466e2fe--


--===============7952386591091155800==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============7952386591091155800==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Maxima-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-discuss

--===============7952386591091155800==--