PreviousUpNext

15.3.559  src/lib/std/src/typelocked-vector.api

## typelocked-vector.api

# Compiled by:
#     src/lib/std/src/standard-core.sublib



# Generic interface for typelocked vector packages.



###                      "Thought is subversive and revolutionary, destructive and terrible.
###                       Thought is merciless to privilege, established institutions, and comfortable habit.
###                       Thought is great and swift and free."
###
###                                                       -- Bertrand Russell


# This api is implemented in:
#
#     src/lib/std/src/vector-of-one-byte-unts.pkg
#     src/lib/std/src/vector-of-chars.pkg
#     src/lib/std/src/vector-of-eight-byte-floats.pkg

api Typelocked_Vector {
    #
    Vector;
    Element;

    maximum_vector_length:  Int;

 #  vector creation functions 
    from_list:  List( Element ) -> Vector;
    from_fn:  (Int, (Int -> Element)) -> Vector;

    length:    Vector -> Int;
    cat:      List( Vector ) -> Vector;

    get:      (Vector, Int) -> Element;
    (_[]):     (Vector, Int) -> Element;                                # (_[])   enables   'vec[index]'           notation;

    set:      (Vector, Int, Element) -> Vector;
    (_[]:=):   (Vector, Int, Element) -> Vector;                        #  (_[]:=) enables   'vec[index] := value'  notation;

    keyed_apply:    ((Int, Element) -> Void) -> Vector -> Void;
    apply:     (Element -> Void) -> Vector -> Void;

    keyed_map:    ((Int, Element) -> Element) -> Vector -> Vector;
    map:     (Element -> Element) -> Vector -> Vector;

    keyed_fold_forward:  ((Int, Element, X) -> X) -> X -> Vector -> X;
    keyed_fold_backward:  ((Int, Element, X) -> X) -> X -> Vector -> X;

    fold_forward:   ((Element, X) -> X) -> X -> Vector -> X;
    fold_backward:   ((Element, X) -> X) -> X -> Vector -> X;

    keyed_find:   ((Int, Element) -> Bool) -> Vector ->  Null_Or ((Int, Element));
    find:    (Element -> Bool) -> Vector -> Null_Or( Element );

    exists:  (Element -> Bool) -> Vector -> Bool;
    all:     (Element -> Bool) -> Vector -> Bool;

    compare_sequences: ((Element, Element) -> Order) -> (Vector, Vector) -> Order;

  };


## COPYRIGHT (c) 1994 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext