¿Qué idiomas que no son únicamente funcionales tienen datos algebraicos tipos (o algo similar) y coincidencia de patrón? También me interesan los lenguajes multi-paradigma: sé que Ocaml y F # son dialectos ML con OO agregado, por lo que heredan los tipos de datos algebraicos de ML.Tipos de datos algebraicos fuera de los lenguajes funcionales?
Pueden ser de tipo de emulado usando enum
s y union
s (como en C, C++, ... más?), Pero pronto se pone incómodo y feo, y el compilador no le avisará si se olvida un caso en su coincidencia de patrón o (mucho más propagable y mucho más peligroso) al acceder a la unión "de maneras incorrectas", es decir, solicita un campo de un valor Left
cuando en realidad es un valor Right
(lo que obtiene entonces es un reinterpretación sin sentido de los bits que están allí).
He oído que Pascal has something like tagged unions y Cyclone language también admiten uniones etiquetadas. Wikipedia también menciona Ada y Algol. ¿Algún otro idioma?
(En caso de que nunca haya oído hablar de tipos de datos algebraicos, puede leer an Answer to "What is 'Pattern Matching' in functional languages?" para una introducción excelente).
Gracias - No tengo ni idea de los lenguajes lógicos, por lo que seguramente no lo habría aprendido. – delnan
Ambos son lenguajes de investigación. La comunidad LP ha estado pidiendo prestado mucho a sus primos FP. –