src/Pure/General/output.ML
changeset 17539 b2ce48df4d4c
parent 17521 0f1c48de39f5
child 18682 216692feebab
equal deleted inserted replaced
17538:9b089c63f088 17539:b2ce48df4d4c
    33   val show_debug_msgs: bool ref
    33   val show_debug_msgs: bool ref
    34   val no_warnings: ('a -> 'b) -> 'a -> 'b
    34   val no_warnings: ('a -> 'b) -> 'a -> 'b
    35   val assert: bool -> string -> unit
    35   val assert: bool -> string -> unit
    36   val deny: bool -> string -> unit
    36   val deny: bool -> string -> unit
    37   val assert_all: ('a -> bool) -> 'a list -> ('a -> string) -> unit
    37   val assert_all: ('a -> bool) -> 'a list -> ('a -> string) -> unit
       
    38   val update_warn: ('a * 'a -> bool) -> string -> ('a * 'b)
       
    39     -> ('a * 'b) list -> ('a * 'b) list
    38   val overwrite_warn: (''a * 'b) list * (''a * 'b) -> string -> (''a * 'b) list
    40   val overwrite_warn: (''a * 'b) list * (''a * 'b) -> string -> (''a * 'b) list
    39   datatype 'a error = Error of string | OK of 'a
    41   datatype 'a error = Error of string | OK of 'a
    40   val get_error: 'a error -> string option
    42   val get_error: 'a error -> string option
    41   val get_ok: 'a error -> 'a option
    43   val get_ok: 'a error -> 'a option
    42   val handle_error: ('a -> 'b) -> 'a -> 'b error
    44   val handle_error: ('a -> 'b) -> 'a -> 'b error
   156 (*Assert pred for every member of l, generating a message if pred fails*)
   158 (*Assert pred for every member of l, generating a message if pred fails*)
   157 fun assert_all pred l msg_fn =
   159 fun assert_all pred l msg_fn =
   158   let fun asl [] = ()
   160   let fun asl [] = ()
   159         | asl (x::xs) = if pred x then asl xs else error (msg_fn x)
   161         | asl (x::xs) = if pred x then asl xs else error (msg_fn x)
   160   in asl l end;
   162   in asl l end;
       
   163 
       
   164 fun overwrite (al, p as (key, _)) =
       
   165   let fun over ((q as (keyi, _)) :: pairs) =
       
   166             if keyi = key then p :: pairs else q :: (over pairs)
       
   167         | over [] = [p]
       
   168   in over al end;
   161 
   169 
   162 fun overwrite_warn (args as (alist, (a, _))) msg =
   170 fun overwrite_warn (args as (alist, (a, _))) msg =
   163  (if is_none (AList.lookup (op =) alist a) then () else warning msg;
   171  (if is_none (AList.lookup (op =) alist a) then () else warning msg;
   164   overwrite args);
   172   overwrite args);
   165 
   173