Hi,

This `lazy-seq` over a `when` and `cons` idiom seems fairly common. Is
there any reason there is not a function for it? For example:

(defn cons-while
  "Lazily creates a sequence by repeatedly calling f until pred is
false"
  [pred f]
  (lazy-seq
    (when pred
      (cons f (cons-while pred f)))))

I haven't tested it but I suspect the following should now work:

(cons-while (Mouse/hasEvent) (Mouse/getEvent))

Regards,

Mark
--
http://mark.reid.name

On May 8, 7:44 am, Meikel Brandmeyer <m...@kotka.de> wrote:
> Hi,
>
> lazy-seq to the rescue:
>
> (defn mouse-seq
>    []
>    (lazy-seq
>      (when (Mouse/hasEvent)
>        (cons (Mouse/getEvent) (mouse-seq)))))
>
> Sincerely
> Meikel
>
> Am 07.05.2009 um 23:40 schrieb CuppoJava:
>
>
>
>
>
> > Yeah (pred) is not supposed to depend on any items inside f.
>
> > This is why (take-while pred (repeatedly f)))
> > won't work in this situation.
>
> > (take-while) will always take an element out of f, so that it can be
> > tested using (pred). I don't want any elements of (f) to be looked at
> > if (pred) is false.
>
> > ----USE CASE----
> > I'm using it in combination with some Java libraries. The following
> > seems like a very clojure-ish way of doing things.
>
> > (for [:while (Mouse/hasEvent)] (Mouse/getEvent))
>
> > so this returns a nice lazy stream of mouse events, which can be
> > processed however i like.
> > >
>
>
>  smime.p7s
> 5KViewDownload

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to