Source
(defun write-uri (uri stream)
(with-slots (scheme host path query fragment)
uri
(write-uri-sans-query uri stream)
(when query
(flet ((write-query-part (name value)
(write-as-uri name stream)
(write-char #\= stream)
(write-as-uri value stream)))
(write-string "?" stream)
(write-query-part (car (first query))
(cdr (first query)))
(iterate
(for (name . value) in (cdr query))
(write-char #\& stream)
(write-query-part name value))))
(when fragment
(write-char #\# stream)
(write-string fragment stream))))Source Context