(defun pipe-map (fn pipe) (if (pipe-null-p pipe) empty-pipe (make-pipe (funcall fn (head pipe)) (pipe-map fn (tail pipe)))))