polya
Class Polylist

java.lang.Object
  |
  +--polya.Polylist
Direct Known Subclasses:
Incremental

public class Polylist
extends java.lang.Object

Polylist is the basic unit for constructing an open linked list of Objects.
A Polylist can be either :
empty, or
non-empty, in which case it consists of:
a Object as the first thing in the list
a rest which is a Polylist.
A Polylist can also be a Incremental, which may be converted into an
ordinary Polylist by applying methods such as isEmpty(), first(), and
rest(). 


Field Summary
static Polylist nil
          nil is the empty-list constant
 
Constructor Summary
Polylist()
          construct empty Polylist
 
Method Summary
static java.lang.String analysis(java.lang.Object Ob)
          analysis produces a string analyzing objects, especially Polylists
 Polylist append(Polylist M)
          append(M) returns a Polylist consisting of the elements of this followed by those of M.
 java.lang.Object[] array()
          array() returns an array of elements in list
 Polylist cons(java.lang.Object First)
          cons returns a new Polylist given a First and this as a Rest
static Polylist cons(java.lang.Object First, Polylist Rest)
          static cons returns a new Polylist given a First and a Rest.
static Polylist cons(java.lang.Object First, polya.Seed Rest)
          This variant of cons takes a Seed instead of a Polylist as rest, so the list can be grown incrementally.
 Polylist coprefix(long n)
          coprefix creates the Polylist with all but the length-n prefix of a Polylist
 PolylistEnum elements()
          elements() returns a PolylistEnum object, which implements the interface java.util.Enumeration.
 boolean equals(java.lang.Object M)
          equals(M) tells whether this Polylist is equal to some other Object
static boolean equals(Polylist L, Polylist M)
          equals(L, M) tells whether Polylists L and M are equal
static Polylist explode(java.lang.String S)
          explode(String S) converts a string into a Polylist of Character
 java.lang.Object fifth()
          fifth selects the fifth element of a Polylist.
 java.lang.Object first()
          first() returns the first element of a non-empty Polylist.
static java.lang.Object first(Polylist L)
          first(L) returns the first element of its argument.
 java.lang.Object fourth()
          fourth selects the fourth element of a Polylist.
 java.lang.String implode()
          implode() creates a String from a Polylist of items
 boolean isEmpty()
          isEmpty() tells whether the Polylist is empty.
 int length()
           
static Polylist list()
          list(A, B, C, ...) returns a list made of specific elements.
static Polylist list(java.lang.Object A)
           
static Polylist list(java.lang.Object A, java.lang.Object B)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K, java.lang.Object L)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K, java.lang.Object L, java.lang.Object M)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K, java.lang.Object L, java.lang.Object M, java.lang.Object N)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K, java.lang.Object L, java.lang.Object M, java.lang.Object N, java.lang.Object O)
           
static Polylist list(java.lang.Object A, java.lang.Object B, java.lang.Object C, java.lang.Object D, java.lang.Object E, java.lang.Object F, java.lang.Object G, java.lang.Object H, java.lang.Object I, java.lang.Object J, java.lang.Object K, java.lang.Object L, java.lang.Object M, java.lang.Object N, java.lang.Object O, java.lang.Object P)
           
static void main(java.lang.String[] args)
          test program for Polylists etc.
 Polylist map(Function1 F)
          map maps an object of class Function1 over a Polylist returning a Polylist
 boolean member(java.lang.Object A)
          member(A, L) tells whether A is a member of this
 boolean nonEmpty()
          nonEmpty() tells whether the Polylist is non-empty.
 java.lang.Object nth(long n)
          nth selects Polylist item by index (0, 1, 2, ...).
static Polylist PolylistFromArray(java.lang.Object[] array)
          PolylistFromArray makes a list out of an array of objects
static Polylist PolylistFromEnum(java.util.Enumeration e)
          PolylistFromEnum makes a Polylist out of any Enumeration.
 Polylist prefix(long n)
          prefix creates the length-n prefix of a Polylist.
static Polylist range(long M, long N)
          range(M, N) returns a Polylist of the form (M M+1 ....
static Polylist range(long M, long N, long S)
          range(M, N, S) returns a Polylist of the form (M M+S ....
 java.lang.Object reduce(Function2 F, java.lang.Object unit)
          reduce reduces a Polylist by a Function2 object, with unit
 Polylist rest()
          rest() returns the rest of a non-empty Polylist.
static Polylist rest(Polylist L)
          rest(L) returns the rest of its argument.
 Polylist reverse()
          reverse(L) returns the reverse of this
 java.lang.Object second()
          second selects the second element of a Polylist.
 void setFirst(java.lang.Object ob)
          setFirst() sets the first of a list to an object
 java.lang.Object sixth()
          sixth selects the sixth element of a Polylist.
 java.lang.Object third()
          third selects the third element of a Polylist.
 java.lang.String toString()
          toString() converts Polylist to string, e.g.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

nil

public static final Polylist nil
nil is the empty-list constant
Constructor Detail

Polylist

public Polylist()
construct empty Polylist
Method Detail

isEmpty

public boolean isEmpty()
isEmpty() tells whether the Polylist is empty.

nonEmpty

public boolean nonEmpty()
nonEmpty() tells whether the Polylist is non-empty.

first

public java.lang.Object first()
first() returns the first element of a non-empty Polylist.
Throws:
NullPointerException - Can't take first of an empty Polylist.

setFirst

public void setFirst(java.lang.Object ob)
setFirst() sets the first of a list to an object
Throws:
NullPointerException - Can't take first of an empty Polylist.

rest

public Polylist rest()
rest() returns the rest of a non-empty Polylist.
Throws:
NullPointerException - Can't take rest of an empty Polylist.

toString

public java.lang.String toString()
toString() converts Polylist to string, e.g. for printing
Overrides:
toString in class java.lang.Object

cons

public Polylist cons(java.lang.Object First)
cons returns a new Polylist given a First and this as a Rest

cons

public static Polylist cons(java.lang.Object First,
                            Polylist Rest)
static cons returns a new Polylist given a First and a Rest.

cons

public static Polylist cons(java.lang.Object First,
                            polya.Seed Rest)
This variant of cons takes a Seed instead of a Polylist as rest, so the list can be grown incrementally.

PolylistFromEnum

public static Polylist PolylistFromEnum(java.util.Enumeration e)
PolylistFromEnum makes a Polylist out of any Enumeration.

list

public static Polylist list()
list(A, B, C, ...) returns a list made of specific elements. There is one function of each number of elements, up to 16 elements.

list

public static Polylist list(java.lang.Object A)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K,
                            java.lang.Object L)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K,
                            java.lang.Object L,
                            java.lang.Object M)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K,
                            java.lang.Object L,
                            java.lang.Object M,
                            java.lang.Object N)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K,
                            java.lang.Object L,
                            java.lang.Object M,
                            java.lang.Object N,
                            java.lang.Object O)

list

public static Polylist list(java.lang.Object A,
                            java.lang.Object B,
                            java.lang.Object C,
                            java.lang.Object D,
                            java.lang.Object E,
                            java.lang.Object F,
                            java.lang.Object G,
                            java.lang.Object H,
                            java.lang.Object I,
                            java.lang.Object J,
                            java.lang.Object K,
                            java.lang.Object L,
                            java.lang.Object M,
                            java.lang.Object N,
                            java.lang.Object O,
                            java.lang.Object P)

length

public int length()

elements

public PolylistEnum elements()
elements() returns a PolylistEnum object, which implements the interface java.util.Enumeration.

first

public static java.lang.Object first(Polylist L)
first(L) returns the first element of its argument.
Throws:
NullPointerException - Can't take first of empty List.

rest

public static Polylist rest(Polylist L)
rest(L) returns the rest of its argument.
Throws:
NullPointerException - Can't take rest of empty Polylist.

reverse

public Polylist reverse()
reverse(L) returns the reverse of this

append

public Polylist append(Polylist M)
append(M) returns a Polylist consisting of the elements of this followed by those of M.

member

public boolean member(java.lang.Object A)
member(A, L) tells whether A is a member of this

range

public static Polylist range(long M,
                             long N)
range(M, N) returns a Polylist of the form (M M+1 .... N)

range

public static Polylist range(long M,
                             long N,
                             long S)
range(M, N, S) returns a Polylist of the form (M M+S .... N)

second

public java.lang.Object second()
second selects the second element of a Polylist.
Throws:
NullPointerException - Can't take second of Polylist.

third

public java.lang.Object third()
third selects the third element of a Polylist.
Throws:
NullPointerException - Can't take third of Polylist.

fourth

public java.lang.Object fourth()
fourth selects the fourth element of a Polylist.
Throws:
NullPointerException - Can't take fourth of Polylist.

fifth

public java.lang.Object fifth()
fifth selects the fifth element of a Polylist.
Throws:
NullPointerException - Can't take fifth of Polylist

sixth

public java.lang.Object sixth()
sixth selects the sixth element of a Polylist.
Throws:
NullPointerException - Can't take sixth of Polylist

nth

public java.lang.Object nth(long n)
nth selects Polylist item by index (0, 1, 2, ...).
Throws:
NullPointerException - Can't select from an empty Polylist.

prefix

public Polylist prefix(long n)
prefix creates the length-n prefix of a Polylist.

coprefix

public Polylist coprefix(long n)
coprefix creates the Polylist with all but the length-n prefix of a Polylist

equals

public static boolean equals(Polylist L,
                             Polylist M)
equals(L, M) tells whether Polylists L and M are equal

equals

public boolean equals(java.lang.Object M)
equals(M) tells whether this Polylist is equal to some other Object
Overrides:
equals in class java.lang.Object

main

public static void main(java.lang.String[] args)
test program for Polylists etc.

analysis

public static java.lang.String analysis(java.lang.Object Ob)
analysis produces a string analyzing objects, especially Polylists

array

public java.lang.Object[] array()
array() returns an array of elements in list

PolylistFromArray

public static Polylist PolylistFromArray(java.lang.Object[] array)
PolylistFromArray makes a list out of an array of objects

explode

public static Polylist explode(java.lang.String S)
explode(String S) converts a string into a Polylist of Character

implode

public java.lang.String implode()
implode() creates a String from a Polylist of items

map

public Polylist map(Function1 F)
map maps an object of class Function1 over a Polylist returning a Polylist

reduce

public java.lang.Object reduce(Function2 F,
                               java.lang.Object unit)
reduce reduces a Polylist by a Function2 object, with unit