foldl : ('a -> 'b -> 'c -> 'a) -> 'a -> ('b, 'c) func -> 'a

SYNOPSIS
Folds an operation iteratively over the graph of a finite partial function.

DESCRIPTION
This is one of a suite of operations on finite partial functions, type ('a,'b)func. These may sometimes be preferable to ordinary functions since they permit more operations such as equality comparison, extraction of domain etc. If a finite partial function p has graph [x1,y1; ...; xn,yn] then the application foldl f a p returns
 f (f ... (f (f a x1 y1) x2 y2) ...) xn yn
Note that the order in which the pairs are operated on depends on the internal structure of the finite partial function, and is often not the most obvious.

FAILURE CONDITIONS
Fails if one of the embedded function applications does.

EXAMPLE
The graph function is implemented based on the following invocation of foldl, with an additional sorting phase afterwards:
  # let f = (1 |-> 2) (2 |=> 3);;
  val f : (int, int) func = 

  # graph f;;
  val it : (int * int) list = [(1, 2); (2, 3)]

  # foldl (fun a x y -> (x,y)::a) [] f;;
  val it : (int * int) list = [(1, 2); (2, 3)]
Note that in this case the order happened to be the same, but this is an accident.

SEE ALSO
|->, |=>, apply, applyd, choose, combine, defined, dom, foldr, graph, is_undefined, mapf, ran, tryapplyd, undefine, undefined.