Skip to content

Instantly share code, notes, and snippets.

@carld
Last active April 17, 2017 04:04
Show Gist options
  • Select an option

  • Save carld/3503dc0540ec43fb864134bb3b94ce4c to your computer and use it in GitHub Desktop.

Select an option

Save carld/3503dc0540ec43fb864134bb3b94ce4c to your computer and use it in GitHub Desktop.
example of lazy-seq in Clojure
user> (defn page-search
[search-term & {:keys [page page-size] :or {page 0 page-size 100}}]
(case page
0 {:items ["page zero"]}
1 {:items ["page one"]}
2 {:items ["page two"]}
nil))
#'user/page-search
user> (defn lazy-page-search
[search-term & {:keys [page page-size] :or {page 0 page-size 100}}]
(lazy-seq
(let [{items :items} (page-search search-term :page page :page-size page-size)]
(when (seq items)
(cons items
(lazy-page-search
search-term
:page (inc page)
:page-size page-size))))))
#'user/lazy-page-search
user> (take 1 (lazy-page-search "test"))
(["page zero"])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment