¿Fue Clojure influenciado por ObjectiveC Protocols? Si no, ¿cómo son la diferencia?¿Influencia de los protocolos de Clojure?
Respuesta
Usted puede encontrar estos artículos y enlaces de interés:
- http://kirindave.tumblr.com/post/658770511/monkey-patching-gorilla-engineering-protocols-in - toques en Objective-C un poco
- http://www.assembla.com/wiki/show/clojure/Protocols - Rich Hickey en la motivación para los protocolos
- http://groups.google.com/group/clojure/msg/330c230e8dc857a9 - más ricos en protocolos y otros tales cosas
Comparten el mismo nombre y los conceptos están relacionados, sin embargo, los protocolos Clojure a son más generales y están diseñados para resolver el "problema de expresión". Esto video is very interesting to watch.
Los protocolos de Objective C son más como las interfaces de Java/C# - especifican un conjunto de métodos que una clase concreta puede implementar. Sin embargo, debe proporcionar estos métodos en la clase concreta, lo que generalmente significa que en la práctica usted controla el código fuente de la clase que está ampliando.
protocolos Clojure permiten definir un conjunto de funciones que se extienden para manejar cualquier clase de una forma polimórfica, y que pueden proporcionar las implementaciones por separado, incluso si no se controla la clase está extendiendo.
Un ejemplo de extender un protocolo Clojure a la clase java.lang.String por ejemplo (que definitivamente no controlas!) Y también a la nula valor especial (es decir, un valor nulo):
;; define a protocol with one function
(defprotocol FooProtocol
(foo [this]))
;; extend the protocol to String and nil
(extend-protocol FooProtocol
java.lang.String
(foo [some-string] (str "Called foo on String: " some-string))
nil
(foo [_] "Called foo on nil value"))
(foo "hello")
=> "Called foo on String: hello"
(foo nil)
=> "Called foo on nil value"
- 1. Protocolos Clojure burladores
- 2. Cómo extender los protocolos numéricos en Clojure
- 3. ¿Cómo encuentro los protocolos implementados en el objeto Clojure?
- 4. despacho dependientes Medio Ambiente de protocolos/métodos múltiples en clojure
- 5. Diferencia entre los protocolos de Clojure y las categorías de Groovy
- 6. protocolos binarios v. Protocolos de texto
- 7. ¿Por qué los protocolos Objective-c adoptan otros protocolos?
- 8. aleatorio: influencia del género
- 9. Diferencia entre los protocolos FIX y FAST?
- 10. Prolongar protocolos para clases, mapas y secuencias personalizados de Java en Clojure
- 11. binario vs protocolos de texto
- 12. protocolos binarios de propósito general
- 13. Propiedades de anulación que se ajustan a los protocolos
- 14. ¿Cómo manejar los protocolos de Objective-C que contienen propiedades?
- 15. ¿Se considera que los protocolos sin estado son mejores para usar en protocolos con estado?
- 16. ¿influencia de Lisp en el lenguaje de programación de factores?
- 17. IIS 7 Protocolos habilitados
- 18. Lista completa de protocolos/interfaces de Python
- 19. dominios para diferentes protocolos
- 20. Cuál es la influencia de compilar paquetes ORACLE con DEPURTO
- 21. protocolos de descubrimiento de servicio automático
- 22. Uso de protocolos de Objective C
- 23. Objective-C protocolos "privados"?
- 24. Implementación de estructuras de datos personalizadas usando Clojure Protocols
- 25. Protocolos utilizados por las bolsas de valores
- 26. Otros protocolos comunes además de HTTP?
- 27. ¿Deben los protocolos cumplir con el protocolo NSObject?
- 28. NSNotificationCenter vs delegación (usando protocolos)?
- 29. Diferencias entre las interfaces Java y los protocolos Objective-C?
- 30. Protocolos y delegados para Dummies
Gracias por sus enlaces. –