src/Pure/library.ML
changeset 19424 b701ea590259
parent 19383 a7c055012a8c
child 19454 46a7e133f802
equal deleted inserted replaced
19423:51eeee99bd8f 19424:b701ea590259
   110   val fold: ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
   110   val fold: ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
   111   val fold_rev: ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
   111   val fold_rev: ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
   112   val fold_map: ('a -> 'b -> 'c * 'b) -> 'a list -> 'b -> 'c list * 'b
   112   val fold_map: ('a -> 'b -> 'c * 'b) -> 'a list -> 'b -> 'c list * 'b
   113   val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a
   113   val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a
   114   val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list
   114   val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list
       
   115   val unflat: 'a list list -> 'b list -> 'b list list
   115   val burrow: ('a list -> 'b list) -> 'a list list -> 'b list list
   116   val burrow: ('a list -> 'b list) -> 'a list list -> 'b list list
   116   val fold_burrow: ('a list -> 'c -> 'b list * 'd) -> 'a list list -> 'c -> 'b list list * 'd
   117   val fold_burrow: ('a list -> 'c -> 'b list * 'd) -> 'a list list -> 'c -> 'b list list * 'd
   117   val chop: int -> 'a list -> 'a list * 'a list
   118   val chop: int -> 'a list -> 'a list * 'a list
   118   val splitAt: int * 'a list -> 'a list * 'a list
   119   val splitAt: int * 'a list -> 'a list * 'a list
   119   val dropwhile: ('a -> bool) -> 'a list -> 'a list
   120   val dropwhile: ('a -> bool) -> 'a list -> 'a list
   650 
   651 
   651 (*flatten a list of lists to a list*)
   652 (*flatten a list of lists to a list*)
   652 val flat = List.concat;
   653 val flat = List.concat;
   653 
   654 
   654 fun unflat (xs :: xss) ys =
   655 fun unflat (xs :: xss) ys =
   655       let val (ps,qs) = splitAt(length xs,ys)
   656       let val (ps, qs) = chop (length xs) ys
   656       in ps :: unflat xss qs end
   657       in ps :: unflat xss qs end
   657   | unflat [] [] = []
   658   | unflat [] [] = []
   658   | unflat _ _ = raise UnequalLengths;
   659   | unflat _ _ = raise UnequalLengths;
   659 
   660 
   660 fun burrow f xss =
   661 fun burrow f xss =