anchor.diff:      let r = accepts >>= fun a -> serves >>= fun m -> matcher m a |> Seq.singleton
       Seq.choose id r |> Seq.distinct |> Seq.toList
   
  +/// <summary>
  +/// Filters and maps a list of served items and a Accept-* header of acceptable items using a matcher function
  +/// </summary>
  +/// <param name="matcher"></param>
  +/// <param name="serves"></param>
  +/// <param name="accepts"></param>
   let negotiate matcher serves accepts =
       negotiateList matcher serves (parseFilterSortAccept accepts)
   
  
positive.code:             let filteredAccepts = filterSortAccept accepts 
              negotiateList matchCharset serves filteredAccepts
  
  let bestCharset x = bestOf negotiateCharset x
  
  
negative.code:     List.tryFind isMatch accepts
      |> Option.map ignore
  
  /// <summary>
  /// Matches two language tags
  /// </summary>
  /// <param name="serves"></param>
  /// <param name="accepts"></param>
  let matchLanguage serves accepts =
      match serves,accepts with
      | "*",a -> Some a
  