Guest User

map for zipper

a guest
Mar 7th, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. (defn map-zipper
  2. "apply f to every element of zipper z, return results as a lazy sequence"
  3. [f z]
  4. (lazy-seq
  5. #_(cl-format true "~&(F: ~a ~&Z: ~a~&" (f z) z)
  6. (if (z/end? z)
  7. nil ;;acc
  8. (cons (f z)
  9. (map-zipper f (z/next z))))))
  10.  
  11. (defn filter-zipper
  12. "return elements of zipper where (pred element) is true, as a lazy sequence"
  13. [pred z]
  14. (lazy-seq
  15. (if (z/end? z)
  16. nil
  17. (if (pred z)
  18. (cons z
  19. (filter-zipper pred (z/next z)))
  20. (filter-zipper pred (z/next z))))))
Advertisement
Add Comment
Please, Sign In to add comment