PreviousUpNext

15.3.519  src/lib/std/src/paired-lists.api

## paired-lists.api
#
# Various analogs of the regular list 'fold_backward' 'fold_forward'
# etc functions which operate in parallel upon two lists instead
# of on a single list.
#
# For vanilla List ops see:
#
#     src/lib/std/src/list.api

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


# NB: If lists are of unequal length, the excess elements from
# the tail of the longer one are ignored. No exception is raised.



###            "There are two types of people:
###             those who come into a room and say, "Well, here I am!"
###             and those who come in and say, "Ah, there you are."
###
###                          -- Frederick L. Collins





api Paired_Lists {
    #
    exception UNEQUAL_LENGTHS;

    zip:     ((List(X), List(Y))) -> List( (X, Y) );
    zip_eq:  ((List(X), List(Y))) -> List( (X, Y) );

    unzip:   List( (X, Y) ) -> ((List(X), List(Y)));

    map:     ((X, Y) -> Z) -> ((List(X), List(Y))) -> List(Z);
    map_eq:  ((X, Y) -> Z) -> ((List(X), List(Y))) -> List(Z);

    apply:     ((X, Y) -> Void) -> ((List(X), List(Y))) -> Void;
    apply_eq:  ((X, Y) -> Void) -> ((List(X), List(Y))) -> Void;

    fold_forward:   (((X, Y, Z)) -> Z) -> Z -> ((List(X), List(Y))) -> Z;
    fold_backward:  (((X, Y, Z)) -> Z) -> Z -> ((List(X), List(Y))) -> Z;

    foldl_eq: (((X, Y, Z)) -> Z) -> Z -> ((List(X), List(Y))) -> Z;
    foldr_eq: (((X, Y, Z)) -> Z) -> Z -> ((List(X), List(Y))) -> Z;

    all:     ((X, Y) -> Bool) -> ((List(X), List(Y))) -> Bool;
    all_eq:  ((X, Y) -> Bool) -> ((List(X), List(Y))) -> Bool;

    exists:  ((X, Y) -> Bool) -> ((List(X), List(Y))) -> Bool;

}; #  Api Paired_Lists 


## COPYRIGHT (c) 1995 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