A sequential-access object with a non-consuming current-value operation and a separate advance operation. Repeated reads of the current value leave its abstract sequence unchanged. Converting a consuming iterator into a cursor therefore needs a cache or an equivalent saved-current representation.