src/Pure/library.ML
changeset 61707 d5ddd022a451
parent 60970 e08d868ceca9
child 62468 d97e13e5ea5b
equal deleted inserted replaced
61706:a1510dfb9bfa 61707:d5ddd022a451
   111   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
   111   val take_suffix: ('a -> bool) -> 'a list -> 'a list * 'a list
   112   val prefixes1: 'a list -> 'a list list
   112   val prefixes1: 'a list -> 'a list list
   113   val prefixes: 'a list -> 'a list list
   113   val prefixes: 'a list -> 'a list list
   114   val suffixes1: 'a list -> 'a list list
   114   val suffixes1: 'a list -> 'a list list
   115   val suffixes: 'a list -> 'a list list
   115   val suffixes: 'a list -> 'a list list
       
   116   val trim: ('a -> bool) -> 'a list -> 'a list
   116 
   117 
   117   (*integers*)
   118   (*integers*)
   118   val upto: int * int -> int list
   119   val upto: int * int -> int list
   119   val downto: int * int -> int list
   120   val downto: int * int -> int list
   120   val radixpand: int * int -> int list
   121   val radixpand: int * int -> int list
   585 fun prefixes xs = [] :: prefixes1 xs;
   586 fun prefixes xs = [] :: prefixes1 xs;
   586 
   587 
   587 fun suffixes1 xs = map rev (prefixes1 (rev xs));
   588 fun suffixes1 xs = map rev (prefixes1 (rev xs));
   588 fun suffixes xs = [] :: suffixes1 xs;
   589 fun suffixes xs = [] :: suffixes1 xs;
   589 
   590 
       
   591 fun trim pred = take_prefix pred #> #2 #> take_suffix pred #> #1;
   590 
   592 
   591 
   593 
   592 (** integers **)
   594 (** integers **)
   593 
   595 
   594 (* lists of integers *)
   596 (* lists of integers *)