MathAction #432 List doesn't check for circularity in length



#432 List doesn't check for circularity in length
last edited 10 years ago by test1

Submitted by : kratt6 at: 2008年09月01日T12:05:02-07:00 (17 years ago)
Name :
Axiom Version :
Category : Severity : Status :
Optional subject :
Optional comment :

fricas
(1) -> u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part:=rest(u,2); setrest!(end, part);
Type: List(PositiveInteger?)

Asking for the number of elements of u will exhibit lisp-implementation-dependend behaviour, ranging from an error to an infinite loop.

We should either fix the documentation (saying, that this is the case), or check for circularity. This could be done by calling LIST_-LENGTH instead of LENGTH in ILIST, for example.

According to the common lisp standard list-length returns nil if the list is circular.

http://www.lispworks.com/documentation/HyperSpec/Body/f_list_l.htm

re: documentation --Bill Page, 2008年9月01日 12:23:09 -0700 reply
On Mon, Sep 1, 2008 at 4:27 PM, Tim Daly wrote
In the documentation it states:

"Note that using the "#" operator on a list with cycles causes Axiom to enter an infinte loop"

See: http://axiom-developer.org/axiom-website/documentation.html in Volume 0: Axiom Jenks and Sutor p41

speed --Bill Page, 2008年9月01日 12:42:34 -0700 reply
Using FriCAS built with GCL-2.6.8pre the difference between LENGTH and LIST-LENGTH seems to be negligible. Usingclisp, LIST-LENGTH actually seems a little faster.
fricas
w:=[random(2^31)$INT for i in 1..10^5];
Type: List(Integer)
fricas
)set message time on

fricas
for i in 1..10000 repeat integer(LENGTH(w)$Lisp)
Type: Void
fricas
Time: 0.99 (EV) = 1.00 sec

fricas
for i in 1..10000 repeat integer(LIST_-LENGTH(w)$Lisp)
Type: Void
fricas
Time: 0.99 (EV) = 0.99 sec

speed sbcl --kratt6, 2008年9月02日 02:33:06 -0700 reply
On sbcl 32bit, LIST-LENGTH is slower than LENGTH by a factor of roughly 1.25. (compared to gcl on my 32 bit machine, where the factor is 1.57! I'm surprised of the result above, that makes for a factor of 1.03...) I'm not sure whether this is negligible. However, for short lists, the difference really should be negligible...

Martin

... --test1, 2015年10月27日 14:23:42 +0000 reply
Status: open => rejected




Subject: Be Bold !!
( 15 subscribers )
Please rate this page:

AltStyle によって変換されたページ (->オリジナル) /