added surround;
authorwenzelm
Sat, 26 Jan 2008 17:08:39 +0100
changeset 25980 fa26b76d3e7e
parent 25979 3297781f8141
child 25981 870ae1d0452e
added surround;
src/Pure/library.ML
--- a/src/Pure/library.ML	Sat Jan 26 17:08:38 2008 +0100
+++ b/src/Pure/library.ML	Sat Jan 26 17:08:39 2008 +0100
@@ -110,6 +110,7 @@
   val map_split: ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list
   val split_list: ('a * 'b) list -> 'a list * 'b list
   val separate: 'a -> 'a list -> 'a list
+  val surround: 'a -> 'a list -> 'a list
   val replicate: int -> 'a -> 'a list
   val is_prefix: ('a * 'a -> bool) -> 'a list -> 'a list -> bool
   val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list
@@ -535,6 +536,9 @@
 fun separate s (x :: (xs as _ :: _)) = x :: s :: separate s xs
   | separate _ xs = xs;
 
+fun surround s (x :: xs) = s :: x :: surround s xs
+  | surround s [] = [s];
+
 (*make the list [x, x, ..., x] of length n*)
 fun replicate (n: int) x =
   let fun rep (0, xs) = xs