Hi,

On Sat, Mar 6, 2010 at 20:36, Manfred Lotz <manfred.l...@arcor.de> 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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
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