anchor.diff:      [<Extension>]
       [<CompiledName("Run")>]
       let run tests = 
  -        let results = exec tests
  -        let report = testResultsToString results
  +        let printResult (n,t) = printfn "%s: %s" n (testResultToString t)
  +        let results = exec printResult printResult printResult tests
           let summary = sumTestResults results
  -        printfn "%s" report
           printfn "%d tests run: %d passed, %d failed, %d errored"
               (summary.Errored + summary.Failed + summary.Passed)
               summary.Passed
  
positive.code:             then ok
              else failf "Expected %A but was %A" expected actual
  
      let exec =
          let rec loop (parentName: string) (partialResults: TestResults) =
              function
              | TestLabel (name, test) -> loop (parentName + "/" + name) partialResults test
              | TestCase test -> 
                  try
                      match test() with
                      | Choice1Of2() -> (parentName, Passed)::partialResults
                      | Choice2Of2 error -> (parentName, Failed error)::partialResults
                  with e -> (parentName, Exception e)::partialResults
              | TestList tests -> List.collect (loop parentName partialResults) tests
  
          loop "" []
  
negative.code:         | Exception e -> "Exception: " + e.ToString()
  
      type TestResults = (string * TestResult) list
  
      type TestResultCounts = {
          Passed: int
  