On Wed, Feb 18, 2009 at 12:35 AM, Rob <rob.nikan...@gmail.com> wrote:
>
> I'm wondering if I found a bug.  I have the latest source from svn
> (r1291).
>
> user=> (bean 1)
> java.lang.IllegalArgumentException: Wrong number of args passed to:
> core$bean--5161$fn--5179$thisfn

You sure did.  The conversion to lazy-seq code appears to introduce a
paren typo and an incorrect nil pun.  Patch attached.

Rich, I think it'd be pretty useful to have as you mentioned in IRC a
variant of & destructuring that provided an unforced lazy-seq.  It
seems pretty common to want, in the body of a lazy-seq, a destructured
'first' but an unforced 'rest'.  This is already the third or fourth
time I've wanted to be able to do something like:

  (fn thisfn [plseq]
    (lazy-seq
      (when-let [[pkey &rest etc] plseq]
        (cons (new clojure.lang.MapEntry pkey (v pkey))
              (thisfn etc)))))

--Chouser

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

commit 539242b543c99bf430c5b821f9c4a0ca769a8a26
Author: Chouser <chou...@n01se.net>
Date:   Wed Feb 18 10:57:25 2009 -0500

    Fix bean lazy-seq

diff --git a/trunk/src/clj/clojure/core_proxy.clj b/trunk/src/clj/clojure/core_proxy.clj
index 2b2d01d..120ffbf 100644
--- a/trunk/src/clj/clojure/core_proxy.clj
+++ b/trunk/src/clj/clojure/core_proxy.clj
@@ -340,11 +340,11 @@
       (count [] (count pmap))
       (assoc [k v] (assoc (snapshot) k v))
       (without [k] (dissoc (snapshot) k))
-      (seq [] ((fn thisfn [pseq]
+      (seq [] ((fn thisfn [plseq]
 		  (lazy-seq
-                   (when pseq
+                   (when-let [pseq (seq plseq)]
                      (cons (new clojure.lang.MapEntry (first pseq) (v (first pseq)))
-                           (thisfn (rest pseq))))) (keys pmap)))))))
+                           (thisfn (rest pseq)))))) (keys pmap))))))
 
 
 

Reply via email to