anchor.diff:          yield Double.Parse(line)
   ]
   
  -
  -
   type datum = {age:float; height:float}
   
  -let rec climbHill (f: float -> float) (x:float) (step:float) = seq{   
  -    let y = f x
  -    yield (x, y)
  -    let x' = x + step
  -    let y' = f x'
  -    let step' = if y' > y then step else -step/2.0
  -    yield! climbHill f x' step'       
  -}    
  -
  -let guess (data: datum list) =
  +let linearGuess (data: datum list) =
       let first = data.Head
       let last = List.reduce (fun _ i -> i) data
       if first.height = last.height then
  
positive.code:     let ages = readLines ageFile
      let heights = readLines heightFile
  
      printfn "got %d ages and %d heights" ages.Length heights.Length
  
      let sampleData = List.zip ages heights |> List.map(fun (a, h) -> {age=a; height = h})
      
      for d in sampleData do
          printfn "age:%f height:%f" d.age d.height
  
      let (a, c) = guess(sampleData) 
      let step = 1.0;
      
      let ourF x = -(cost sampleData x c)
      
      let trail = climbHill ourF a step
  
      for (a, cost) in trail do
          printfn "a:%f cost:%f" a cost
  
      0
  
negative.code:     |> List.map (costDatum a c)
      |> List.sum
  
  let rec climbHill (f: float -> float) (x:float) (step:float) = seq{   
      let y = f x
      yield (x, y, step)
      let x' = x + step
      let y' = f x'
      let step' = if y' > y then step else -step/10.0
      yield! climbHill f x' step'       
  }    
  
  [<EntryPoint>]
  let main argv = 
      let appDir =  DirectoryInfo( __SOURCE_DIRECTORY__).Parent
  