Thanks
I change the function with this one
(defn testdoseq []
(do
(doseq [x '("a" "b" "c")]
(fn1 x)
)
(doseq [x '("1" "2" "3")]
(fn2 x)
)
))
On 17 juin, 20:26, Aaron Cohen <[email protected]> wrote:
> On Fri, Jun 17, 2011 at 2:13 PM, FD <[email protected]> wrote:
> > Hello,
>
> > What is wrong in this function?
>
> > (defn testmap []
> > (do
> > (map #(fn1 %)
> > '("a" "b" "c"))
> > (map #(fn2%)
> > '("1" "2" "3"))
> > ))
>
> 1) "for" is lazy, its value is a LazySeq and the contents are only
> evaluated at need
> 2) The return value of "do" is the last statement executed
> 3) As a result, the resul of "testmap" is a LazySeq containing ("1"
> "2" "3"), the first LazySeq is discarded.
> 4) At the repl, the second LazySeq is printed because it's the result
> of calling testmap. As each entry is lazily realized, the println call
> prints "1" and the repl prints the return value of "println", which is
> nil.
>
>
>
>
>
>
>
> > If fn1 = fn2 = println
> > the result is
> > (1
> > 2
> > nil 3
> > nil nil)
>
> > I expected this result
> > a
> > b
> > c
> > 1
> > 2
> > 3
>
> > Thanks
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to [email protected]
> > Note that posts from new members are moderated - please be patient with
> > your first post.
> > To unsubscribe from this group, send email to
> > [email protected]
> > For more options, visit this group at
> >http://groups.google.com/group/clojure?hl=en
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en