ListPair structureThe ListPair structure provides operations on pairs of lists. These operations do not require that the lists have the same length; when the lists are of uneven lengths, the excess elements from the tail of the longer list are ignored.
signature LIST_PAIR
structure ListPair : LIST_PAIR
val zip : ('a list * 'b list) -> ('a * 'b) list     
val unzip : ('a * 'b) list -> ('a list * 'b list)     
val map : ('a * 'b -> 'c) -> ('a list * 'b list) -> 'c list     
val app : ('a * 'b -> unit) -> ('a list * 'b list) -> unit     
val foldl : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c       
val foldr : (('a * 'b * 'c) -> 'c) -> 'c -> ('a list * 'b list) -> 'c         
val all : ('a * 'b -> bool) -> ('a list * 'b list) -> bool   
val exists : ('a * 'b -> bool) -> ('a list * 'b list) -> bool     
zip (l1, l2)
      
unzip l
      
zip for equal length lists.   
map f (l1, l2)
      
List.map f (zip (l1, l2)).   
app f (l1, l2)
      
List.app f (zip (l1, l2)).     
foldl f c (l1, l2)
          
          foldr f c (l1, l2)
          
List.foldl f' c (zip (l1, l2))       and       List.foldr f' c (zip (l1, l2))       where f' is fn ((a,b),c) => f(a,b,c).   
all pred (l1, l2)
      
        exists pred (l1, l2)
      
List.all pred (zip (l1, l2))       and       List.exists pred (zip (l1, l2)).   
Rationale:
Another approach to these functions is to raise an exception when the argument lists are of uneven length. We chose not to do this, because comparing the lists for length conflicts with the short-circuit evaluation of
allandexists.
List
Last Modified April 8, 1996
Comments to John Reppy.
Copyright © 1997 Bell Labs, Lucent Technologies