In primitives.lisp, (defmacro qcdr (x) `(cdr (the cons ,x))) In List, QCDR is used almost everywhere except "rest".
In following benchmark, it shows QCDR is 15% slower than CDR (blist2(10^6) 1.50s vs 1.30s blist1(10^6)), for SBCL. For ECL, it's same and faster than SBCL: both are around 0.66s. )abbrev package BENCH1 Bench1 Bench1() : Exp == Impl where Exp == with blist0 : PositiveInteger -> Void blist1 : PositiveInteger -> Void blist2 : PositiveInteger -> Void Impl == add blist0 N == a0 := new(N,1)$List(Integer) for j in 1..1000 repeat for i in 1..N repeat rest(a0) blist1 N == a0 := new(N,1)$List(Integer) for j in 1..1000 repeat for i in 1..N repeat CDR(a0)$Lisp blist2 N == a0 := new(N,1)$List(Integer) for j in 1..1000 repeat for i in 1..N repeat QCDR(a0)$Lisp -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To post to this group, send email to fricas-devel@googlegroups.com. Visit this group at https://groups.google.com/group/fricas-devel. For more options, visit https://groups.google.com/d/optout.