src/Pure/library.ML
changeset 12249 dd9a51255855
parent 12136 74156e7bb22e
child 12260 4898247d0102
equal deleted inserted replaced
12248:f059876ef1d3 12249:dd9a51255855
   117   val split_list: ('a * 'b) list -> 'a list * 'b list
   117   val split_list: ('a * 'b) list -> 'a list * 'b list
   118   val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool
   118   val equal_lists: ('a * 'b -> bool) -> 'a list * 'b list -> bool
   119   val prefix: ''a list * ''a list -> bool
   119   val prefix: ''a list * ''a list -> bool
   120   val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list
   120   val take_prefix: ('a -> bool) -> 'a list -> 'a list * 'a list
   121   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
   121   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
       
   122   val prefixes1: 'a list -> 'a list list
       
   123   val suffixes1: 'a list -> 'a list list
   122 
   124 
   123   (*integers*)
   125   (*integers*)
   124   val gcd: int * int -> int
   126   val gcd: int * int -> int
   125   val lcm: int * int -> int
   127   val lcm: int * int -> int
   126   val inc: int ref -> int
   128   val inc: int ref -> int
   663   | take_suffix pred (x :: xs) =
   665   | take_suffix pred (x :: xs) =
   664       (case take_suffix pred xs of
   666       (case take_suffix pred xs of
   665         ([], sffx) => if pred x then ([], x :: sffx) else ([x], sffx)
   667         ([], sffx) => if pred x then ([], x :: sffx) else ([x], sffx)
   666       | (prfx, sffx) => (x :: prfx, sffx));
   668       | (prfx, sffx) => (x :: prfx, sffx));
   667 
   669 
       
   670 fun prefixes1 [] = []
       
   671   | prefixes1 (x :: xs) = map (cons x) ([] :: prefixes1 xs);
       
   672 
       
   673 fun suffixes1 xs = map rev (prefixes1 (rev xs));
       
   674 
   668 
   675 
   669 
   676 
   670 (** integers **)
   677 (** integers **)
   671 
   678 
   672 fun gcd(x,y) =
   679 fun gcd(x,y) =