В вашем фрагменте печать с использованием printfn
выполняется до . Вы проверяете, присутствует ли URL в наборе.Это означает, что он напечатает URL, даже если он не будет добавлен на следующем шаге.(Вы можете увидеть, что он не был добавлен, если вы посмотрите на числа в левом столбце - если счет не был увеличен, число в следующей строке будет таким же).
Перемещение printfn
в теле выражения if
должны быть получены ожидаемые результаты:
// Waits for a URL...
let! url = self.Receive()
// If not the URL already has been crawled...
if not (visited.Contains url) then
printfn "%A | %A" visited.Count url
// Start