Hi,
On Sat, Mar 6, 2010 at 20:36, Manfred Lotz <[email protected]> wrote:
> Now I tried a different way:
>
> (defstruct st :a :b)
>
> (defn my-struct-map [s & inits]
> (let [sm (struct-map s inits)]
> (if (= nil (sm :b))
> (assoc sm :b 0.0)
> sm))
> )
>
> Unfortunately, the part sm (struct-map s inits) doesn't work. I have no
> idea what is wrong with my code.
The problem is with the inits argument passed to struct-map. Your
method will pass a sequence. For instance, if you invoke
(my-struct-map st :a 1 :b 2), struct-map is invoked like this:
(struct-map st (:a 1 :b 2)).
I didn't know how to fix this myself, but nteon on the IRC helped out
and pointed me to apply. So, this definition now works for me:
(defn my-struct-map [s & inits]
(let [sm (apply struct-map s inits)]
(if (= nil (sm :b))
(assoc sm :b 0.0)
sm)))
Hope that helps,
Mike
--
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