One way you could do it is by building up the members incrementally
via 'let':
(defstruct tz :a :b :c)
(def tz1 (let [a 1
b 2
c (+ a b)]
(struct tz a b c)))
On Nov 13, 7:31 am, garf <[email protected]> wrote:
> If I have a struct whose creation will require some function calls
> that references some of its members, I am unsure how to go about it in
> a clean way. For example:
> (defstruct tz :a :b :c)
>
> (def tz1 1 2 (+ (:a tz1) (:b tz1))
>
> will not work, but reflects the problem. Ideally at the end of this
> I could do (:c tz1) and get 3 back. Any suggestions? Originally I
> had used assocs, but that runs into the immutability problem, for
> example
>
> (defstruct tz :a :b)
> (def tz1 1 2)
> (assoc tz1 :c (+ (:a tz1) (:b tz1))
>
> does not actually update tz1
>
> Advice for better approaches?
--
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