anchor.diff:  
   (* Random Walk *)
   let randomWalk<'a> (levels: int): SearchAlgorithm<'a> = fun (reporter: Reporter<'a>)  (e: 'a)  (children: 'a -> 'a List) (costModel: 'a -> double) -> 
  +  reporter.init (sprintf "Random Walk started with %d levels" levels)
     let range = [for i = 1 to levels do yield i]
     let rand = new System.Random()
     let revertedResult = 
  
positive.code: 
  (* Hill Climbing *)
  let hillClimbing<'a> (levels: int): SearchAlgorithm<'a> = fun (reporter: Reporter<'a>)  (e: 'a)  (children: 'a -> 'a List) (costModel: 'a -> double) -> 
    let range = [for i = 1 to levels do yield i]
    let mutable currentBest = e
    let mutable currentBestCost = costModel e
  
negative.code: module Logging =
    type Reporter<'a> = 
      { 
        init: string -> unit; 
        step: int -> int -> ('a * double) -> unit;  // Step#, Rule#, NodeCost
        finish: ('a * double) list -> ('a * double) -> unit // All NodeCosts, Best NodeCost
      }
  