You have a couple of problems in your code. Let's take it a line at a time:
(defn f1 [msg] (fn [msg] (println (str "hello " msg))))
Here you have two "msg" arguments. The inner one will override the outer
one. If you want both, they need to be different names. For example:
(defn f1 [greet] (fn [name] (println greet name)))
The outer function sets the greeting, while the inner one sets the name:
((f1 "hello") "joe") => "hello joe"
You then define an empty collection:
(def collection '())
Which is fine, and the perform a cons:
(cons collection (seq (f1 "xxx")))
However, you have the arguments backward, and you've added in a "seq" that
will just cause an error. Functions cannot be transformed directly into
seqs.
Instead, try:
(cons (f1 "hello") collection)
This should work fine.
- James
On 22 May 2014 14:14, sorin cristea <[email protected]> wrote:
>
> I see,
> this is the problem even if I call correct the function, sorry for that
> missing function parameter, when it will try to add the result of 'f1 "xxx"
> to 'collection' it will try to transform the result, fn..., to an type
> ISeq, this is what collection support, and there appear the problem....
>
>
>
> *(defn f1 [msg] (fn[msg](println (str "hello " msg))))(def collection
> '())(cons collection (seq (f1 "xxx")))*
>
> 'IllegalArgumentException Don't know how to create ISeq from:
> ro.srncristea.blogspot.clojure.concurrency$f1$fn__2158
> clojure.lang.RT.seqFrom (RT.java:505)'
>
> thanks,
> sorin.
>
>
> On Thursday, May 22, 2014 3:04:39 PM UTC+3, Di Xu wrote:
>>
>> (defn *f1* [msg] (*fn[msg](println (str "hello " msg))*))
>>> (def collection '())
>>> (cons (f1) collection)
>>>
>>
>> change (cons (f1) collection) into (cons (f1 "xxx") collection)
>>
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
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 unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.