In this implementation streams are not vectors nor lists. They are ordered hash maps.
Just pointing out what the theoretical documentation says. A stream should have operations for empty, current, and next. You don't want implementation details leaking into the abstract model.