Según tengo entendido, en informática los tipos de datos no se basan en la teoría de conjuntos debido a cosas como la paradoja de Russell, pero como en los lenguajes de programación del mundo real no podemos expresar tipos de datos tan complejos como "conjunto que no se contiene a sí mismo", ¿podemos? ¿Digamos que en la práctica el tipo es un conjunto infinito de sus miembros donde la pertenencia a la instancia se define por el número de características que son intrínsecas a este tipo / conjunto (existencia de ciertas propiedades, métodos)? Si no, ¿cuál sería el contraejemplo?
11
Respuestas:
La razón principal para evitar conjuntos en la semántica de tipos es que un lenguaje de programación típico nos permite definir funciones recursivas arbitrarias. Por lo tanto, cualquiera que sea el significado de un tipo, debe tener la propiedad de punto fijo. El único conjunto con dicha propiedad es el conjunto singleton.
Por supuesto, también podría darse cuenta de que el culpable es la lógica clásica. Si trabaja con la teoría intuitiva de conjuntos, entonces es consistente asumir que hay muchos conjuntos con propiedades de punto fijo. De hecho, esto se ha utilizado para dar semántica del lenguaje de programación, ver por ejemplo
fuente
fuente
Con algunas excepciones (una que cita Dave Clarke), la semántica de tipos simple de teoría de conjuntos es difícil de usar. La razón es que la abstracción de datos no juega muy bien con la semántica de la teoría de conjuntos.
fuente