Hello,

2013/9/19 Murtaza Husain <murtaza.hus...@sevenolives.com>

>
> Wow ! Thanks for the link Jozef.
>
> Another question  -
>
> From the Stuart Sierra blog on Lifecycle Composition -
>
>
> (defrecord Database [uri connection-atom]
>   Lifecycle
>   (start [_]
>     (future (reset! connection-atom (connect uri))))
>   (stop [_]
>     (.close @connection-atom)
>     (future (reset! connection-atom nil))))
>
> (defn database [uri]
>   (->Database uri (atom nil)))
>
> I know I can create record objects as (Database. uri (atom nil))
>
> However I cant understand how and why the above (-> Database uri (atom
> nil)) works ?
>

No, it's (->Database uri (atom nil)) : there's no space between -> and
Database.

This factory function ->Database is automatically created by the defrecord
macro
(see the end of the docstring for defrecord:
http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/defrecord)

HTH,

-- 
Laurent


>
> Thanks,
> Murtaza
>
>
> On Thursday, September 19, 2013 9:04:53 PM UTC+5:30, Jozef Wagner wrote:
>>
>> The example you've given is just a stub, not a full implementation of the
>> record. The magic is happening in emit-defrecord https://github.**
>> com/clojure/clojure/blob/**master/src/clj/clojure/core_**deftype.clj#L148<https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_deftype.clj#L148>
>>
>> Best,
>> JW
>>
>>
>>
>> On Thu, Sep 19, 2013 at 5:21 PM, Murtaza Husain <murtaza...@sevenolives.*
>> *com> wrote:
>>
>>> Hi,
>>>
>>> I was going through the article regarding clojure protocols and
>>> datatypes - http://www.ibm.com/**developerworks/java/library/j-**
>>> clojure-protocols/index.html<http://www.ibm.com/developerworks/java/library/j-clojure-protocols/index.html>
>>>
>>> In it an example is given for a new defrecord that the author creates.
>>> The generated java source for the record as given in the article -
>>>
>>>
>>> public class PurchaseOrder
>>>     implements Fulfillment,
>>>                java.io.Serializable,
>>>                java.util.Map,
>>>                java.lang.Iterable,
>>>                clojure.lang.IPersistentMap {
>>>
>>>     public final Object date;
>>>     public final Object customer;
>>>     public final Object products;
>>>
>>>     public PurchaseOrder(Object date, Object customer, Object products) {
>>>         this.date = date;
>>>         this.customer = customer;
>>>         this.products = products;
>>>     }
>>> }
>>>
>>>
>>> My question - I can see that the generated class implements the
>>> java.util.Map and clojure.lang.IPersistentMap interfaces. However where are
>>> the code for implementations of the interfaces ? I do not see any concrete
>>> code other than the constructor and some fields.
>>>
>>> Thanks,
>>> Murtaza
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@**googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/**group/clojure?hl=en<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 clojure+u...@**googlegroups.com.
>>> For more options, visit 
>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>> .
>>>
>>
>>  --
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to