He encontrado defadt
macro en clojure.contrib.types. Desafortunadamente, no hay documentación útil sobre el uso de ADT en clojure. Busqué en Google durante horas y encontré pequeños fragmentos de información al respecto. ¿Qué son los ADT en Clojure? Cómo usarlos? Cualquier información será útil :)Clojure tipos de datos algebraicos
6
A
Respuesta
2
Alguna información se puede encontrar en el archivo examples.clj en src/clojure/contrib/types. Se muestra un ejemplo de una estructura de árbol se define como un ADT:
(defadt ::tree
empty-tree
(leaf value)
(node left-tree right-tree))
Más información en el archivo de origen.
1
Hay un ejemplo muy interesante de ADT está en Clojure here:
Definimos un generador de ADT como esto:
(defmacro data
[adt-name equals-sign & constructors]
`(do
(defn ~(symbol (str adt-name "?")) [~'obj]
(= ~(str adt-name) (adt-name ~'obj)))
[email protected](for [[type-name & fields]
(filter (partial not= '(|))
(partition-by (partial = '|) constructors))]
(apply (partial emit-constructor adt-name type-name)
fields))))
Dado el ejemplo de Haskell:
data Tree a = Empty
| Leaf a
| Node Tree Tree
Entonces escribimos Clojure
(data Tree = Empty | Leaf value | Node left right)
Que es muy bueno.
Cuestiones relacionadas
- 1. Tipos de datos algebraicos fuera de los lenguajes funcionales?
- 2. ¿Por qué los tipos de datos algebraicos Haskell "están cerrados"?
- 3. ¿Cómo implementar "Ord" para tipos de datos algebraicos en Haskell?
- 4. Haskell: datos algebraicos vs Tupla
- 5. ¿Hay alguna manera de implementar tipos algebraicos en Java?
- 6. Recorrido recursivo de abajo hacia arriba de tipos de datos algebraicos
- 7. ¿Es posible hacer herencia de tipos de datos en Clojure?
- 8. Tipos anidados en clojure?
- 9. clases de tipos en los tipos de datos de Haskell
- 10. Seguridad de formato de datos en clojure
- 11. En Clojure, ¿cómo puedo implementar interfaces de recopilación Clojure estándar en mis propios registros y tipos?
- 12. tipos de datos autopromueven
- 13. Tipos de datos SQLite
- 14. tipos jerárquicos de datos
- 15. ¿El concepto de tipo de datos algebraicos es similar a las definiciones de clase en los lenguajes OO?
- 16. tipos de datos de BigQuery
- 17. ¿Puedo agregar campos a los tipos de clojure?
- 18. ¿Cómo realizo la Conversión de tipos en Clojure?
- 19. Huella de memoria de los tipos de datos Haskell
- 20. tipos de datos no entendidos
- 21. Rails 3 tipos de datos?
- 22. serialización de la estructura de datos Clojure
- 23. ¿Qué tipos de datos de C# pueden ser tipos anulables?
- 24. Clojure y bases de datos NoSQL
- 25. Use una base de datos con Clojure
- 26. ¿Los miembros de la entidad deberían ser tipos de datos primitivos o tipos de datos Java?
- 27. ¿Cómo puedo convertir programáticamente tipos de datos SQL a tipos de datos .Net?
- 28. Uso de tipos de datos en Haskell
- 29. java Comparación de tipos de datos largos
- 30. Fuerte fallo de tipos de datos
¿Está desaprobado definitivamente? –