Good point. I keep falling into the trap of treating types like
classes. Types don't have inline constructors, because normal
functions perform that task well enough. If I want to coerce a map
into a type, I really need just a constructor function, rather than
the type itself.

In this case, something like:

(defn make-bar [m]
  (Bar. (m :x) {} (dissoc m :x)))

- James

On 22 May 2010 07:06, Meikel Brandmeyer <m...@kotka.de> wrote:
> Hi,
>
> user=> (defrecord Bar [x])
> user.Bar
> user=> (into (Bar. nil) {:x 1 :y 2})
> #:user.Bar{:x 1, :y 2}
>
> One still has to know, that Bar takes an argument, but one could provide
> and API function which takes care of that.
>
> user=> (defrecord Bar [x])
> user.Bar
> user=> (defn empty-bar [] (Bar. nil))
> #'user/empty-bar
> user=> (into (empty-bar) {:x 1 :y 2})
> #:user.Bar{:x 1, :y 2}
>
> Sincerely
> Meikel
>
> --
> 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

-- 
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