|
197 | 197 | ;; ============================================================================ |
198 | 198 |
|
199 | 199 | (defn map-seq |
200 | | - "Return a lazy seq of key-value MapEntry pairs." |
| 200 | + "Return a lazy seq of key-value MapEntry pairs, or nil if empty." |
201 | 201 | [^ReadHashMap rhm read-from-cursor] |
202 | 202 | (let [it (.iterator rhm)] |
203 | | - (letfn [(step [] |
204 | | - (lazy-seq |
205 | | - (when (.hasNext it) |
206 | | - (let [cursor (.next it) |
207 | | - kv (.readKeyValuePair cursor) |
208 | | - k (read-from-cursor (.-keyCursor kv))] |
209 | | - (let [v (read-from-cursor (.-valueCursor kv))] |
210 | | - (cons (clojure.lang.MapEntry. k v) (step)))))))] |
211 | | - (step)))) |
| 203 | + (when (.hasNext it) |
| 204 | + (letfn [(step [] |
| 205 | + (lazy-seq |
| 206 | + (when (.hasNext it) |
| 207 | + (let [cursor (.next it) |
| 208 | + kv (.readKeyValuePair cursor) |
| 209 | + k (read-from-cursor (.-keyCursor kv))] |
| 210 | + (let [v (read-from-cursor (.-valueCursor kv))] |
| 211 | + (cons (clojure.lang.MapEntry. k v) (step)))))))] |
| 212 | + (step))))) |
212 | 213 |
|
213 | 214 | (defn set-seq |
214 | | - "Return a lazy seq values from the set." |
| 215 | + "Return a lazy seq values from the set, or nil if empty." |
215 | 216 | [rhm read-from-cursor] |
216 | 217 | (let [it (.iterator rhm)] |
217 | | - (letfn [(step [] |
218 | | - (lazy-seq |
219 | | - (when (.hasNext it) |
220 | | - (let [cursor (.next it) |
221 | | - kv (.readKeyValuePair cursor) |
222 | | - v (read-from-cursor (.-keyCursor kv))] |
223 | | - (cons v (step))))))] |
224 | | - (step)))) |
| 218 | + (when (.hasNext it) |
| 219 | + (letfn [(step [] |
| 220 | + (lazy-seq |
| 221 | + (when (.hasNext it) |
| 222 | + (let [cursor (.next it) |
| 223 | + kv (.readKeyValuePair cursor) |
| 224 | + v (read-from-cursor (.-keyCursor kv))] |
| 225 | + (cons v (step))))))] |
| 226 | + (step))))) |
225 | 227 |
|
226 | 228 | (defn array-seq |
227 | 229 | "Creates a lazy sequence from a ReadArrayList. |
|
0 commit comments