Nominal/activities/idp/snippets/silence.html
changeset 415 f1be8028a4a9
equal deleted inserted replaced
414:05e5d68c9627 415:f1be8028a4a9
       
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       
     2 <html>
       
     3 <head>
       
     4 <title>Snippets</title>
       
     5 <style type="text/css">
       
     6 
       
     7 code {
       
     8   font-family:  Courier New, Courier, monospace;
       
     9   font-size: 100%
       
    10   white-space: nowrap; /* pre would be better, but it doesn't work with IE */
       
    11 }
       
    12 
       
    13 .codedisplay {
       
    14   font-family:  Courier New, Courier, monospace;
       
    15   margin: 10px;
       
    16   padding: 10px;
       
    17   border-width: 20px;
       
    18   text-style: center;
       
    19   white-space: pre;
       
    20   color: black;
       
    21   border-color: #A9A9A9;
       
    22   border-width: thin;
       
    23   border-style: solid;
       
    24   background-color: #D3D3D3;
       
    25   background-repeat: no-repeat;
       
    26   background-position: 0 0; 
       
    27   background-attachment: fixed;
       
    28 }
       
    29 </style>
       
    30 </head>
       
    31 
       
    32 <body>
       
    33 <h3>How to silence the output produced by other tools?</h3>
       
    34 
       
    35 
       
    36 Jasmin Blanchette wrote: When writing Nitpick, I found the need to silence 
       
    37 the other tools upon  which Nitpick relies, because their output interfered 
       
    38 in bad ways with  Nitpick's own output. So I used code like the following:
       
    39 
       
    40 <div class="codedisplay">(* (string -> unit) ref -> ('a -> 'b) -> 'a -> 'b *)
       
    41 fun silence_one out_fn f x =
       
    42 let
       
    43   val old_out_fn = !out_fn
       
    44   val _ = out_fn := K ()
       
    45   val y = f x
       
    46   val _ = out_fn := old_out_fn
       
    47 in y end
       
    48 
       
    49 (* ('a -> 'b) -> 'a -> 'b *)
       
    50 fun silence f =
       
    51    fold silence_one
       
    52       [Output.writeln_fn, Output.priority_fn, Output.tracing_fn,
       
    53        Output.warning_fn, Output.error_fn, Output.debug_fn,  
       
    54        Output.prompt_fn, Output.status_fn] f
       
    55 </div>
       
    56 
       
    57 <hr>    
       
    58 <!-- Created: Thu May 21 21:17:59 CEST 2009 -->
       
    59 <!-- hhmts start -->
       
    60 Last modified: Thu May 21 21:43:15 CEST 2009
       
    61 <!-- hhmts end -->
       
    62 <a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
       
    63  </body>
       
    64 </html>