src/Pure/library.ML
changeset 25980 fa26b76d3e7e
parent 25943 d431d65346a1
child 26079 a58cc0cf4176
equal deleted inserted replaced
25979:3297781f8141 25980:fa26b76d3e7e
   108   val zip_options: 'a list -> 'b option list -> ('a * 'b) list
   108   val zip_options: 'a list -> 'b option list -> ('a * 'b) list
   109   val ~~ : 'a list * 'b list -> ('a * 'b) list
   109   val ~~ : 'a list * 'b list -> ('a * 'b) list
   110   val map_split: ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list
   110   val map_split: ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list
   111   val split_list: ('a * 'b) list -> 'a list * 'b list
   111   val split_list: ('a * 'b) list -> 'a list * 'b list
   112   val separate: 'a -> 'a list -> 'a list
   112   val separate: 'a -> 'a list -> 'a list
       
   113   val surround: 'a -> 'a list -> 'a list
   113   val replicate: int -> 'a -> 'a list
   114   val replicate: int -> 'a -> 'a list
   114   val is_prefix: ('a * 'a -> bool) -> 'a list -> 'a list -> bool
   115   val is_prefix: ('a * 'a -> bool) -> 'a list -> 'a list -> bool
   115   val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list
   116   val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list
   116   val chop_prefix: ('a * 'b -> bool) -> 'a list * 'b list -> 'a list * ('a list * 'b list)
   117   val chop_prefix: ('a * 'b -> bool) -> 'a list * 'b list -> 'a list * ('a list * 'b list)
   117   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
   118   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
   533 
   534 
   534 (*separate s [x1, x2, ..., xn]  ===>  [x1, s, x2, s, ..., s, xn]*)
   535 (*separate s [x1, x2, ..., xn]  ===>  [x1, s, x2, s, ..., s, xn]*)
   535 fun separate s (x :: (xs as _ :: _)) = x :: s :: separate s xs
   536 fun separate s (x :: (xs as _ :: _)) = x :: s :: separate s xs
   536   | separate _ xs = xs;
   537   | separate _ xs = xs;
   537 
   538 
       
   539 fun surround s (x :: xs) = s :: x :: surround s xs
       
   540   | surround s [] = [s];
       
   541 
   538 (*make the list [x, x, ..., x] of length n*)
   542 (*make the list [x, x, ..., x] of length n*)
   539 fun replicate (n: int) x =
   543 fun replicate (n: int) x =
   540   let fun rep (0, xs) = xs
   544   let fun rep (0, xs) = xs
   541         | rep (n, xs) = rep (n - 1, x :: xs)
   545         | rep (n, xs) = rep (n - 1, x :: xs)
   542   in
   546   in