Básicamente, dado {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-}
(y más, si es necesario), ¿el operador de nivel de tipo (~)
trabaja en las expresiones de tipo de tipo Constraint
? Traté de buscar en Google la respuesta, pero no tuve suerte.Igualdad en las restricciones
8
A
Respuesta
6
Sí, es posible. Debido a que los tipos del tipo Constraint
son conjuntos finitos de restricciones de tipo atómico, puede probar su igualdad muy fácilmente. Sin embargo, la extensión PolyKinds
no es necesaria. Además, hay muy pocas situaciones en las que este tipo de igualdad realmente sería útil, porque no veo una forma práctica de pasar restricciones polimórficas como los argumentos c1
, c2
a Bla
, por lo que la igualdad de restricciones sería una tautología en todos los casos (Show ~ Show
aquí):
{-# LANGUAGE ConstraintKinds, TypeFamilies #-}
type Bla c1 c2 a = (c1 a, c2 a, c1 ~ c2)
foo :: Bla Show Show a => a -> IO()
foo = print
main = foo "Bla"
Cuestiones relacionadas
- 1. PostgreSQL - deshabilitar las restricciones
- 2. Método de igualdad en las interfaces
- 3. Excluyendo tipos en las restricciones genéricas (¿posible?)
- 4. Mostrar las restricciones en una tabla
- 5. Restricciones genéricas en la función
- 6. Servidor SQL: eliminación de filas con restricciones de clave externa: ¿Pueden las transacciones anular las restricciones?
- 7. Demostrando la igualdad de las corrientes
- 8. C superar las restricciones de aliasing (? Sindicatos)
- 9. Igualdad estructural en F #
- 10. ¿Cómo verificar las restricciones entre los elementos en una lista/es esta Programación de Restricciones?
- 11. ¿Cómo puedo eliminar todas las restricciones de restricciones predeterminadas en una tabla
- 12. ¿Cómo comparar dos elementos del mismo tipo genérico sin restricciones para la igualdad?
- 13. igualdad en javascript
- 14. sqlalchemy id igualdad vs igualdad de referencia
- 15. igualdad lógico en C
- 16. Relajar las restricciones de ordenamiento en el cómputo monádico
- 17. Deshabilitar todas las restricciones de tabla en Oracle
- 18. Escriba restricciones en todas las instancias familiares de tipo
- 19. Restricciones de nomenclatura de las variables en java
- 20. Variable de tipo ambiguo `a0 'en las restricciones
- 21. MySQL: ¿cómo puedo ver TODAS las restricciones en una tabla?
- 22. ¿Es posible colocar restricciones de desigualdad en las variables de tipo haskell?
- 23. ¿Puedo especificar una relación de "supertipo" en las restricciones genéricas de C#?
- 24. Derby: restricciones
- 25. añadir restricciones en phpMyAdmin
- 26. Restricciones en la mezcla
- 27. Restricciones diferibles en SQL Server
- 28. Relaciones de igualdad en Scala
- 29. la igualdad frente a la igualdad de ubicación
- 30. Restricciones de reflexión en Silverlight
La pregunta es extraña, pero se le preguntó bien. Por curiosidad, ¿qué harías con una restricción de igualdad? –
@Daniel Wagner Estoy escribiendo un EDSL de paradigmas cruzados que usa un sistema de funciones genéricas, y, por diversas razones, no puedo hacer uso de clases de tipos directamente. Podría salirse con la suya sin usar esto, pero conduciría a tipos extremadamente torpes y posiblemente a algunas restricciones innecesarias –