I have a question about this: 

"Servers that are running on a particular port can be tracked and stopped. 
I have to say, this was the feature that I wanted the most, which motivated 
the framework's design. The annoying thing about development in emacs is 
that I have to be careful of not losing the reference to the server. Since 
there was no way of stopping it unless the repl is restarted. I wanted to 
implement a registery for references to running servers to be saved."

http://z.caudate.me/the-abstract-container-pattern/

I have the impression that he's going over the same territory as that 
covered by Stuart Sierra, though Zheng doesn't mention "Component" nor 
"Sierra". But he offers this as an example of what he's after: 

(defprotocol IRunnable (start! [system]) (stop! [system]) (restart! [system]
) (started? [system]) (stopped? [system]))

That much seems similar to Sierra's system. Zheng seems to add an 
additional layer by simulating an abstract class above his protocols. As he 
says: 


   - A single deftype acts as the *abstract container*, extending one or 
   more protocols
   - A set of methods defined through defmulti that is used within the 
   deftype form act as *abstract methods*
   - The *abstract methods* all dispatch on map keys (usually :type).


I am curious if others have found this useful? 

Most of the people who work with Clojure have backgrounds with Object 
Oriented Programming, so that paradigm sometimes seems natural, or at least 
familiar. I often think these designs are more verbose than they need to 
be, but I am curious how others feel. 









-- 
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/d/optout.

Reply via email to