Fondamentalmente, dato {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-}
(e altro, se necessario), l'operatore di tipo livello (~)
funziona con le espressioni di tipo livello Constraint
? Ho cercato su Google la risposta, ma non ho avuto fortuna.Uguaglianza sui vincoli
8
A
risposta
6
Sì, è possibile. Poiché i tipi di tipo Constraint
sono insiemi finiti di vincoli di tipo atomico, è possibile testare la loro uguaglianza molto facilmente.
L'estensione PolyKinds
non è necessaria, tuttavia. Inoltre, ci sono poche situazioni in cui questa uguaglianza gentile sarebbe effettivamente utile, perché non vedo un modo pratico per superare i vincoli polimorfici come gli argomenti c1
, c2
a Bla
, quindi l'uguaglianza dei vincoli sarebbe una tautologia in ogni caso (Show ~ Show
qui):
{-# 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"
Problemi correlati
- 1. C# Generics - Vincoli sui parametri del tipo
- 2. Ottimizzazione R con vincoli di uguaglianza e disuguaglianza
- 3. Vincoli sui parametri del tipo: interfaccia vs classe astratta
- 4. Polynomial MATLAB forma con alcuni vincoli sui coefficienti
- 5. Come controllare vincoli sui tipi di contenuto destrezza fields
- 6. vincoli tipi: Passare più vincoli
- 7. Oggetto uguaglianza in dattiloscritto
- 8. Uguaglianza GetHashCode
- 9. Vincoli generici sulla funzione
- 10. Uguaglianza bit array
- 11. uguaglianza in javascript
- 12. Enum Boxing e uguaglianza
- 13. Uguaglianza per .NET PropertyInfos
- 14. Test di uguaglianza vettorizzati
- 15. uguaglianza strutturale in F #
- 16. java.lang.Class e uguaglianza
- 17. Controllo di uguaglianza C#
- 18. R Uguaglianza ignorando NAs
- 19. ActiveRecord uguaglianza oggetto
- 20. Uguaglianza mappa con Hamcrest
- 21. pitone uguaglianza precedenza
- 22. Uguaglianza puntatore in Haskell?
- 23. uguaglianza stringa bash
- 24. Uguaglianza tra due enumerabili
- 25. ArrayList uguaglianza JUnit testing
- 26. Uguaglianza/disuguaglianza di array
- 27. Derby - vincoli
- 28. confronto Float (uguaglianza) in CoreGraphics
- 29. Double.NaN uguaglianza nella SM prova
- 30. Record uguaglianza in collezioni generici
La domanda è strana, ma ha chiesto bene. Per curiosità, cosa faresti con un vincolo di uguaglianza? –
@Daniel Wagner Sto scrivendo un EDSL cross-paradigma che utilizza un sistema di funzioni generico e, per vari motivi, non posso utilizzare direttamente le classi di tipi. Potrei fare a meno di non usarlo, ma porterebbe a tipi estremamente goffi e forse alcune restrizioni inutili –