src/Pure/library.ML
changeset 47499 4b0daca2bf88
parent 47060 e2741ec9ae36
child 48271 b28defd0b5a5
equal deleted inserted replaced
47498:e3fc50c7da13 47499:4b0daca2bf88
   148   val prefix_lines: string -> string -> string
   148   val prefix_lines: string -> string -> string
   149   val prefix: string -> string -> string
   149   val prefix: string -> string -> string
   150   val suffix: string -> string -> string
   150   val suffix: string -> string -> string
   151   val unprefix: string -> string -> string
   151   val unprefix: string -> string -> string
   152   val unsuffix: string -> string -> string
   152   val unsuffix: string -> string -> string
       
   153   val trim_line: string -> string
   153   val replicate_string: int -> string -> string
   154   val replicate_string: int -> string -> string
   154   val translate_string: (string -> string) -> string -> string
   155   val translate_string: (string -> string) -> string -> string
   155   val match_string: string -> string -> bool
   156   val match_string: string -> string -> bool
   156 
   157 
   157   (*reals*)
   158   (*reals*)
   753 
   754 
   754 fun unsuffix sffx s =
   755 fun unsuffix sffx s =
   755   if String.isSuffix sffx s then String.substring (s, 0, size s - size sffx)
   756   if String.isSuffix sffx s then String.substring (s, 0, size s - size sffx)
   756   else raise Fail "unsuffix";
   757   else raise Fail "unsuffix";
   757 
   758 
       
   759 val trim_line = perhaps (try (unsuffix "\n"));
       
   760 
   758 fun replicate_string (0: int) _ = ""
   761 fun replicate_string (0: int) _ = ""
   759   | replicate_string 1 a = a
   762   | replicate_string 1 a = a
   760   | replicate_string k a =
   763   | replicate_string k a =
   761       if k mod 2 = 0 then replicate_string (k div 2) (a ^ a)
   764       if k mod 2 = 0 then replicate_string (k div 2) (a ^ a)
   762       else replicate_string (k div 2) (a ^ a) ^ a;
   765       else replicate_string (k div 2) (a ^ a) ^ a;