axiom-developer
[Top][All Lists]

## Re: [Axiom-developer] Counting Elements in Cyclic List

 From: Bill Page Subject: Re: [Axiom-developer] Counting Elements in Cyclic List Date: Mon, 1 Sep 2008 12:28:43 -0400

```On Mon, Sep 1, 2008 at 11:42 AM, Mov GP 0 wrote:

> I'm new to axiom and tried to count the elements in a cyclic
> resulted in an infinite loop. Version is Axiom 3.9 (September 2005)
>

Welcome.

You are using a rather old version of Axiom. Perhaps you should

Axiom:     http://www.axiom-developer.org/
OpenAxiom: http://www.open-axiom.org/
FriCAS:    http://fricas.sourceforge.net/

> =======================================
> What I've did:
>
> u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part :=
> rest(u,2);  setrest!(end, part);
>
> u is now [9,2,(42,7,1)] -- the () are the cyclic part
>
> when you count the elements using "#u" then it resolves in a loop.
>

I can confirm that this works in FriCAS:

FriCAS (AXIOM fork) Computer Algebra System
Version: FriCAS 2008-02-09
Timestamp: Thursday March 27, 2008 at 18:27:30
-----------------------------------------------------------------------------
Issue )summary for a summary of useful system commands.
-----------------------------------------------------------------------------

(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
(2) -> u
_____
(2)  [9,2,4,7,1]
Type: List PositiveInteger
(3) -> #u

>> System error:

LENGTH: A proper list must not be circular: #1=(9 2 . #2=(4 7 1 . #2#))

> =======================================
> What I 've expected:
>
> There should be a Property like "isCyclic?" that tests if the list
> is cyclic.

There is an operator. Browse the List constructor in hyperdoc. Look
for 'cyclic?'.

(3) -> cyclic? u

(3)  true
Type: Boolean

> The new code for counting should be something like
>
> count(x) == if isCyclic? x then return ?PositiveInfinity else #x
>

(4) -> count(x) == if cyclic? x then return %PositiveInfinity else #x
Type: Void
(
5) -> count u
Compiling function count with type List PositiveInteger ->
Polynomial Integer

(5)  %PositiveInfinity
Type: Polynomial Integer

> =======================================
> Question:
>

If this doesn't work in other forks of Axiom then it should be
reported as an error.

Regards,
Bill Page.

```