Nominal/activities/idp/snippets/silence.html
changeset 415 f1be8028a4a9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Nominal/activities/idp/snippets/silence.html	Wed Mar 30 17:27:34 2016 +0100
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Snippets</title>
+<style type="text/css">
+
+code {
+  font-family:  Courier New, Courier, monospace;
+  font-size: 100%
+  white-space: nowrap; /* pre would be better, but it doesn't work with IE */
+}
+
+.codedisplay {
+  font-family:  Courier New, Courier, monospace;
+  margin: 10px;
+  padding: 10px;
+  border-width: 20px;
+  text-style: center;
+  white-space: pre;
+  color: black;
+  border-color: #A9A9A9;
+  border-width: thin;
+  border-style: solid;
+  background-color: #D3D3D3;
+  background-repeat: no-repeat;
+  background-position: 0 0; 
+  background-attachment: fixed;
+}
+</style>
+</head>
+
+<body>
+<h3>How to silence the output produced by other tools?</h3>
+
+
+Jasmin Blanchette wrote: When writing Nitpick, I found the need to silence 
+the other tools upon  which Nitpick relies, because their output interfered 
+in bad ways with  Nitpick's own output. So I used code like the following:
+
+<div class="codedisplay">(* (string -> unit) ref -> ('a -> 'b) -> 'a -> 'b *)
+fun silence_one out_fn f x =
+let
+  val old_out_fn = !out_fn
+  val _ = out_fn := K ()
+  val y = f x
+  val _ = out_fn := old_out_fn
+in y end
+
+(* ('a -> 'b) -> 'a -> 'b *)
+fun silence f =
+   fold silence_one
+      [Output.writeln_fn, Output.priority_fn, Output.tracing_fn,
+       Output.warning_fn, Output.error_fn, Output.debug_fn,  
+       Output.prompt_fn, Output.status_fn] f
+</div>
+
+<hr>    
+<!-- Created: Thu May 21 21:17:59 CEST 2009 -->
+<!-- hhmts start -->
+Last modified: Thu May 21 21:43:15 CEST 2009
+<!-- hhmts end -->
+<a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
+ </body>
+</html>