anchor.diff:  
   // make the sorted list 1 bigger to prevent resizing
   let list = new System.Collections.Generic.SortedList<string, int>(25 + 1)
  -let rec loop : string -> unit = function
  -    | null -> () // end of file
  -    | line -> 
  -        let [| word; (Int count) |] = line.Split(',')
  -        if list.Count < 25 then list.Add(word, count)
  -        else // swap if greater than the min
  -            let min = list |> Seq.minBy (fun kvp -> kvp.Value)
  -            if min.Value < count then
  -                list.Remove(min.Key) |> ignore
  -                list.Add(word, count)
  -                    
  -        loop <| reader.ReadLine()
  -loop <| reader.ReadLine()    
  +data.[7] <- reader.ReadLine() :> obj
  +while data.[7] <> null do
  +    if list.Count < 25 then 
  +        list.Add(getWord data.[7], getFreq data.[7])
  +    else
  +        data.[8] <- (list |> Seq.minBy (fun kvp -> kvp.Value)) :> obj
  +        if (data.[8] :?> KeyValuePair<string, int>).Value < getFreq data.[7] then
  +            (data.[8] :?> KeyValuePair<string, int>).Key
  +            |> list.Remove 
  +            |> ignore
  +            list.Add(getWord data.[7], getFreq data.[7])
  +
  +    data.[7] <- reader.ReadLine() :> obj
   
   list 
   |> Seq.sortByDescending (fun kvp -> kvp.Value)
  
positive.code: 4. find the 25 most frequent words in secondary memory (file)
  *)
  
  // PART 1
  let stopWords = 
      File.ReadAllText(__SOURCE_DIRECTORY__ + "../stop_words.txt").Split(',')
      |> Set.ofArray
  
  let wordFreqs = File.Open(__SOURCE_DIRECTORY__ + "../word_freqs.txt", 
                            FileMode.Create, 
  
negative.code: open System
  open System.Collections.Generic
  open System.IO
  open System.Text
  
  #time
  let ``pride and prejudice`` = __SOURCE_DIRECTORY__ + "../pride-and-prejudice.txt"
  let test = __SOURCE_DIRECTORY__ + "../test.txt"
  