(loop named convergence for iteration from 0 to iteration-limit do (loop for document in documents for old-rank = (rank document) for new-rank = (loop for neighbor in (graph-neighbors document) sum (/ (* damping (rank neighbor) (document-similarity document neighbor)) (graph-neighbor-edge-sum neighbor))) do (setf (rank document) new-rank) when (convergedp old-rank new-rank) do (return-from convergence)))